在地图上绘制 Lat/Long - D3.js v4

Plotting Lat/Long on map - D3.js v4

我有一张简单的美国地图,我正在尝试绘制一些经纬度测试点。我发现 this block 解释了这个过程,但我在将语法转换为 v4 时遇到了问题。即使我 运行 块中的确切代码也会抛出相同的错误。

我可以看到 d3.geoMercator() 那种 'flattens' 的地图。这个有必要吗?这看起来微不足道,但我喜欢美国地图没有这个的自然曲率。

想知道正确的方法是什么,甚至是否需要某些代码。特别是这部分:

  projection //Added from block -- What is this doing?
    .scale(1000) //Added from block
    .center([-106, 37.5]) //Added from block

我的代码添加了错误的内容,我在添加的代码中添加了注释:https://jsfiddle.net/fettww66/2/

在您链接的 bl.ock 中,您只需要 两个 更改即可实现 运行 D3 v4:

  • var projection = d3.geo.mercator()var projection = d3.geoMercator()

  • var path = d3.geo.path()var path = d3.geoPath()

这是使用 D3 v4 更新后的 bl.ocks:http://bl.ocks.org/anonymous/d0b530924ef2aae3436840a1dbb3a39f

关于您的fiddle,问题很简单:您使用的是已经投影JSON。只需将投影设置为 null:

.projection(null)

这是更新后的 fiddle:https://jsfiddle.net/vypu9qwr/