D3.js显示Topojson

时间:2014-12-23 17:21:49

标签: d3.js geojson topojson mapshaper

我在使用topojson绘制委内瑞拉时遇到了问题。我从http://code.highcharts.com/mapdata/countries/ve/ve-all.geo.json

获得了委内瑞拉的GeoJson数据

之后,我尝试使用topojson控制台实用程序并将其导入此站点:http://www.mapshaper.org/并将其导出为topojson。我还没有能够获得地图。这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script>
    var width = 960,
        height = 1160;

    var svg = d3.select("body").append("svg")
            .attr("width", width)
            .attr("height", height);

    d3.json("venezuela.json", function(error, ve) {
        var path = d3.geo.path();
        svg.append("path")
                .datum(topojson.feature(ve, ve.objects['ve-all.geo']))
                .attr("d", d3.geo.path().projection(d3.geo.mercator()));
    });

</script>

</body>
</html>

topojson:https://gist.githubusercontent.com/rickitan/665af7cc271baf652a90/raw/ed7341aa5431524083c6a1783eb9d32501357a91/mapShaperOutput

我不确定问题是从geojson转换为topojson还是其他东西。

非常感谢你,

里卡多

1 个答案:

答案 0 :(得分:0)

首先,您应该在添加以下图层之前声明路径投影

&#xA;&#xA;
 < code> var projection = d3.geo.mercator()。translate([0,0])。scale(8400000);&#xA; var path = d3.geo.path()。projection(projection);&#xA ;  
&#xA;&#xA;

这使得导入图层时更加干净。之后只需调用类似的东西:

&#xA;&#xA;
  var featureCollection = topojson.feature(currentMap,currentMap.objects.poly_bg);&#xA; g.append( “G”)&#XA; .selectAll( “路径”)&#XA; 。数据(featureCollection.features)&#XA; 。。进入()追加( “路径”)&#XA; .attr(“d”,path);&#xA;  
&#xA;