Devi avere una funzione di proiezione () per proiettare il lat e il long dei tuoi punti sulla mappa. Per impostazione predefinita, un percorso geografico d3 utilizza la proiezione albersUsa, quindi è possibile dichiararlo esplicitamente:
var projection = d3.geo.albersUsa();
Lo vedrai fatto in esempi che non usano AlbersUsa e definendo la proiezione puoi modificarlo. La sua definizione lo rende disponibile come funzione. In questo modo puoi posizionare i tuoi punti come cerchi svg:
svg.append("circle").attr("r",5).attr("transform", function() {return "translate(" + projection([-75,43]) + ")";});
Ciò dovrebbe far cadere un cerchio nelle ruvide vicinanze di New York. È quindi possibile associare i dati con "lat" e "long" come attributi, nel qual caso sarebbe simile al seguente:
svg.selectAll("circles.points")
.data(yourData)
.enter()
.append("circle")
.attr("r",5)
.attr("transform", function(d) {return "translate(" + projection([d.long,d.lat]) + ")";});
La funzione di proiezione prende l'array [long, lat] e restituisce un array [x, y], che si adatta perfettamente alla sintassi transform, translate (), oppure potresti dividere l'array per i valori xey.
L'esempio seguente posiziona polis, linee e punti e prende i punti da un csv e li proietta su una mappa, ma nota che trasforma l'elemento g e aggiunge un cerchio su quell'elemento (potresti anche volere un'etichetta o altri aspetti a un sito, che sarebbe tutto aggiunto a quell'elemento g proiettato):
https://gist.github.com/4414107
http://bl.ocks.org/d/4414107/