Sie benötigen eine projection () -Funktion, um den Lat und den Long Ihrer Punkte auf die Karte zu projizieren. Standardmäßig verwendet ein d3-Geo-Pfad die albersUsa-Projektion, sodass Sie diese explizit deklarieren können:
var projection = d3.geo.albersUsa();
Sie werden dies in Beispielen sehen, die AlbersUsa nicht verwenden, und indem Sie die Projektion definieren, können Sie sie ändern. Wenn es definiert ist, wird es als Funktion verfügbar. Auf diese Weise können Sie Ihre Punkte als Svg-Kreise platzieren:
svg.append("circle").attr("r",5).attr("transform", function() {return "translate(" + projection([-75,43]) + ")";});
Das sollte in der rauen Umgebung von New York einen Kreis schlagen. Sie könnten dann Daten mit den Attributen "lat" und "long" binden. In diesem Fall würde dies folgendermaßen aussehen:
svg.selectAll("circles.points")
.data(yourData)
.enter()
.append("circle")
.attr("r",5)
.attr("transform", function(d) {return "translate(" + projection([d.long,d.lat]) + ")";});
Die Projektionsfunktion benötigt ein [long, lat] -Array und gibt ein [x, y] -Array zurück, das gut in die Syntax von transform, translate () passt, oder Sie können das Array für x- und y-Werte aufteilen.
Im folgenden Beispiel werden Polys, Linien und Punkte platziert und die Punkte aus einer CSV-Datei entnommen und auf eine Karte projiziert. Beachten Sie jedoch, dass das g-Element transformiert und ein Kreis an dieses Element angehängt wird (möglicherweise möchten Sie auch eine Beschriftung oder andere Aspekte an eine Site, die alle an das projizierte g-Element angehängt wird):
https://gist.github.com/4414107
http://bl.ocks.org/d/4414107/