Você precisa ter uma função projection () para projetar o lat e o long de seus pontos no mapa. Por padrão, um caminho geográfico d3 usa a projeção albersUsa, para que você possa declará-lo explicitamente:
var projection = d3.geo.albersUsa();
Você verá isso em exemplos que não usam o AlbersUsa e, ao definir a projeção, você pode modificá-lo. Tê-lo definido o torna disponível como uma função. Dessa forma, você pode colocar seus pontos como círculos svg:
svg.append("circle").attr("r",5).attr("transform", function() {return "translate(" + projection([-75,43]) + ")";});
Isso deve dar um círculo nas proximidades de Nova York. Em seguida, você pode vincular dados que tenham o "lat" e o "long" como atributos; nesse caso, eles serão assim:
svg.selectAll("circles.points")
.data(yourData)
.enter()
.append("circle")
.attr("r",5)
.attr("transform", function(d) {return "translate(" + projection([d.long,d.lat]) + ")";});
A função de projeção pega uma matriz [long, lat] e retorna uma matriz [x, y], que se encaixa perfeitamente na sintaxe de transformação, translate (), ou você pode dividir a matriz para os valores x e y.
O exemplo abaixo coloca polys, linhas e pontos e pega os pontos de um csv e os projeta em um mapa, mas observe que ele transforma o elemento g e acrescenta um círculo a esse elemento (você também pode querer um rótulo ou outros aspectos a um site, todos os quais seriam anexados ao elemento g projetado):
https://gist.github.com/4414107
http://bl.ocks.org/d/4414107/