2012-04-21 24 views
10

में एक सर्कल जोड़ें मैंने एक gebson में परिवर्तित एमबीटीइल से एक नक्शा बनाया है, प्रक्षेपण WGS84 है। मैं इसे इस तरह से लोड:d3.js d3.geo.path

var map = svg.append("g").attr("class", "map"); 
var path = d3.geo.path().projection(d3.geo.albers().origin([3.4,46.8]).scale(12000).translate([590, 570])); 
    d3.json('myjsonfile.json', function(json) { 
     map.selectAll('path').data(json.features).enter().append('path').attr('d', path) 
}); 

अब मैं के साथ अपने (LAT, LNG) मेरी svg में समन्वय एक svg तत्व (एक बिंदु, एक चक्र, एक बिंदु (मुझे पता नहीं)) जोड़ना चाहते हैं ।

मुझे यह नहीं पता कि यह कैसे करना है।

उत्तर

17

आप प्रक्षेपण को अलग तो आप इसे फिर से पेश करने का उपयोग कर सकते करने की जरूरत है अक्षां अपनी बात की/देशांतर:

var map = svg.append("g").attr("class", "map"); 
var projection = d3.geo.albers() 
    .origin([3.4,46.8]) 
    .scale(12000) 
    .translate([590, 570]); 
var path = d3.geo.path().projection(projection); 
d3.json('myjsonfile.json', function(json) { 
    map.selectAll('path') 
     .data(json.features) 
     .enter().append('path').attr('d', path); 
    // now use the projection to project your coords 
    var coordinates = projection([mylon, mylat]); 
    map.append('svg:circle') 
     .attr('cx', coordinates[0]) 
     .attr('cy', coordinates[1]) 
     .attr('r', 5); 
}); 

यह सिर्फ अनुमान coords द्वारा डॉट अनुवाद करने के लिए है करने के लिए एक और तरीका है:

map.append('svg:circle') 
    .attr("transform", function(d) { 
     return "translate(" + projection(d.coordinates) + ")"; 
    }) 
    .attr('r', 5);