Musisz mieć funkcję projection (), aby rzutować długość i długość swoich punktów na mapę. Domyślnie ścieżka geograficzna d3 korzysta z projekcji albersUsa, dzięki czemu można ją wyraźnie zadeklarować:
var projection = d3.geo.albersUsa();
Zobaczysz to zrobione w przykładach, które nie używają AlbersUsa, a definiując projekcję, możesz ją zmodyfikować. Po zdefiniowaniu udostępnia go jako funkcję. W ten sposób możesz umieścić swoje punkty jako okręgi SVG:
svg.append("circle").attr("r",5).attr("transform", function() {return "translate(" + projection([-75,43]) + ")";});
To powinno upuścić koło na nierównym sąsiedztwie Nowego Jorku. Następnie możesz powiązać dane, które miały atrybuty „lat” i „long”, w takim przypadku wyglądałoby to tak:
svg.selectAll("circles.points")
.data(yourData)
.enter()
.append("circle")
.attr("r",5)
.attr("transform", function(d) {return "translate(" + projection([d.long,d.lat]) + ")";});
Funkcja projekcji przyjmuje tablicę [long, lat] i zwraca tablicę [x, y], która dobrze pasuje do transformacji, translacji () lub możesz podzielić tablicę na wartości x i y.
Poniższy przykład umieszcza bieguny, linie i punkty oraz pobiera punkty z pliku csv i rzutuje je na mapę, ale zauważ, że przekształca element g i dołącza okrąg do tego elementu (możesz także chcieć etykiety lub innych aspektów do witryny, z których wszystkie byłyby dołączone do tego rzutowanego elementu g):
https://gist.github.com/4414107
http://bl.ocks.org/d/4414107/