2015-10-12 3 views
0

Я пытаюсь провести линии между нанесенными точками, используя d3.js.Рисование линий между точками в d3.js

Образец GeoJSON (FeatureCollection 3 LineString): https://www.dropbox.com/s/hgkdvbnrgmb6kak/test.geojson?dl=0

Полный Existing Код: https://www.dropbox.com/s/49820rs561vneti/test.html?dl=0

код Кусок У меня проблема с:

lines.append("g").selectAll("path") 
    .data(d3.entries(data.features)).enter() 
    .append("svg:path") 
    .attr("d", path) 

кружках появляются, но а не линию для их соединения.

Любая помощь будет оценена!

ответ

2

Ошибка 1:

Внутри ваши ваши topojson.

{ 
      "geometry": { 
       "type": "LineString", 
       "coordinates": [ 
        [ 
         103.79971, 
         1.3013115 
        ], 
        [ 
         103.8071998, 
         1.2932586 
        ] 
       ] 
      }, 
      "type": "Feature",//this is wrong 
      "properties": {} 
     } 

Это должно было быть:

{ 
      "geometry": { 
       "type": "LineString", 
       "coordinates": [ 
        [ 
         103.79971, 
         1.3013115 
        ], 
        [ 
         103.8071998, 
         1.2932586 
        ] 
       ] 
      }, 
      "properties": {} 
     } 

Ошибка 2:

lines.append("g").selectAll("path") 
    .data(d3.entries(data.features)).enter() 
     .append("svg:path") 
     .attr("d", path) 
     .style("fill", "none") 
     .style("stroke-width", "2px") 

Вы не можете создать такую ​​строку, для создания линии вы должны использовать слой и добавьте (обратите внимание, что функции взяты из вашего test.geojson):

Полный рабочий код here

Надеюсь, что это поможет!

+0

спасибо, Кирилл! это очень помогло! Вопрос, хотя! Есть ли причина, почему добавление строки не может быть выполнено, как в обычных графиках d3 (с enter, exit)? Кажется, что если я хочу строки на картах, их нужно вводить как дополнительный слой (который, как я думал, будет только для слоя topo, шейп-файлов и т. Д.). – iukie

+0

ошибка в geojson странная, хотя я использовал пакет geojson в python для создания файла geojson. И из примера кода на https://github.com/JasonSanford/geojson-google-maps/blob/master/README.md, который имеет пример FeatureCollection (хотя и не с LineString), похоже, он похож. – iukie

+0

Связано с проблемой, но больше формата данных: стоит ли дороже/имеет смысл иметь точки для строки в 1 LineString вместо 3 (текущие данные выборки), если точки для одной группы/пользователя. – iukie

Смежные вопросы