В настоящее время у меня есть куча точек, нарисованных с помощью Protovis поверх Google Maps с использованием API. Выглядит это так: http://mbostock.github.com/protovis/ex/oakland.html
Но мне нужны не просто точки — я хочу, чтобы линии, соединяющие точки, показывали сеть. Я подумал, что могу использовать сетевой макет Protovis (pv.Layout.Network) на Google Maps, используя свойства nodes
и links
и классы pv.Dot и pv.Line. Узлы отображаются на моей карте, но не ссылки. Два других пользователя уже задавали подобные вопросы в группе обсуждения Protovis, но никто не ответил. Вроде должно быть просто.
Мой код в основном такой же, как в приведенном выше примере с обнаружением преступников в Окленде, но я изменил часть кода «Визуализация» на это:
p = new pv.Panel()
.canvas(c)
.left(-x.min)
.top(-y.min);
var pn = p.add(pv.Layout.Network)
.nodes(this.exampleNetwork.nodes)
.links(this.exampleNetwork.links);
pn.link.add(pv.Line)
pn.node.add(pv.Dot)
.left(function() pixels[this.index].x)
.top(function() pixels[this.index].y)
p.render();
Это та часть, которая добавляет макет сети к визуализации. Опять же, узлы работают нормально, но ссылки не отображаются. Буду признателен за любую помощь!
Обновление: вот пример макета Force-Directed в Protovis, в котором используется сетевой макет: http://mbostock.github.com/protovis/ex/force.html. И да, я знаю, что Protovis немного устарел.
Вот пример того, как выглядят мои данные:
var exampleNetwork = {
nodes:[
{
nodeName : "Example1",
nodeValue : 100,
group : 0,
lat : 40.726446,
lon : -74.007339
},
{
nodeName : "Example2",
nodeValue : 2048,
group : 0,
lat : 34.073137,
lon : -118.248596
}
],
links:[
{source:0, target:1, value:5}
]
};