Vetores invisíveis? Combinando os vetores d3.tile (), d3.zoom () e TopoJSON

Criei mapas D3 eficazes usando rasters (d3.tile e bibliotecas de mapas) e vetores (TopoJSON em formas SVG). Mas acertei um bug quando os combinei.

Eu segui os exemplos de vetor e varredura de Mike Bostock, especialmente seus"Varredura e vetor III", que altera a largura da transformação e do traçado para atualizar como os vetores são exibidos.

Meu mapaquase funciona perfeitamente. No entanto, durante o carregamento, apenas os blocos de varredura são exibidos; os vetores são invisíveis:

Mas assim que eu acionar od3.zoom evento (por movimento panorâmico ou zoom), os vetores são exibidos:

Não entendo isso, porque digo explicitamente ao navegador, independentemente do evento de zoom, para desenhar os vetores. Este é o trecho relevante:

  // read in the topojson
  d3.json("ausElectorates.json", function(error, mapData) {
    if (error) throw error;

    var electorates = topojson.feature(mapData, mapData.objects.tracts);

    // apply a zoom transform equivalent to projection{scale,translate,center}
    map.call(zoom)
      .call(zoom.transform, d3.zoomIdentity
        .translate(mapWidth / 2, mapHeight / 2)
        .scale(1 << 12)
        .translate(-centre[0], -centre[1]));

    // draw the electorate vectors
    vector.selectAll("path")
      .data(electorates.features)
      .enter().append("path")
        .attr("class", "electorate")
        .attr("d", path);
  });

Por alguma razão, essa última linha dod3.json() função -.attr("d", path") - não está visualizando os vetores.

Clique aqui para ver o mapa.Clique aqui para acessar o código completo e o TopoJSON que ele usa.

Eu adoraria conselhos sobre este, o que está me deixando desconcertado!

(Desculpas do PS por omitir atribuições de direitos autorais para os blocos de mapa, a biblioteca D3.js., etc. - estou apenas tentando minimizar o código deste exemplo.)

questionAnswers(1)

yourAnswerToTheQuestion