【问题标题】:Plotting Lat/Long on map - D3.js v4在地图上绘制纬度/经度 - D3.js v4
【发布时间】:2017-10-09 21:10:17
【问题描述】:

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

我可以看到 d3.geoMercator() 那种“扁平化”地图。需要这个吗?这似乎微不足道,但我喜欢美国地图没有这个的自然曲率。

很好奇正确的方法是什么,以及是否需要某些代码。特别是这部分:

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

我的代码有损坏的添加,我在添加的代码中添加了 cmets:https://jsfiddle.net/fettww66/2/

【问题讨论】:

    标签: javascript d3.js topojson


    【解决方案1】:

    在您链接的那个块中,您只需进行 两个 更改即可使其与 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

    关于您的小提琴,问题非常简单:您使用的是已经投影 JSON。只需将投影设置为null:

    .projection(null)
    

    这是更新后的小提琴:https://jsfiddle.net/vypu9qwr/

    【讨论】:

    • 谢谢,@Gerardo。代码运行良好,但是,代码变量aa 中列出的纬度/经度具有放置在旧金山的意义。当我运行代码时,它会将其放置在犹他州西部。我发现我可以操纵projection.scale(1000).center([-106, 37.5]),它会移动点。我猜我需要将其编辑为正确的值。我只是不知道它是什么。这是当前的小提琴:https://jsfiddle.net/Lv5knc0n/
    • 嗯,我回答了您帖子中的 两个 问题(使用 D3 v4 需要进行哪些更改以及为什么小提琴不起作用)。看来你的问题比这还多!抱歉,太多了,我的政策是不回答有几个问题的帖子。
    • 不过,您总是可以提出新问题。这样一来,您就可以在每个帖子中保留 1 个问题(实际上,对于 OP 提出多个问题的问题,人们可以投票认为过于宽泛)。
    • 没问题;我创建了一个新帖子。感谢您迄今为止的帮助和最佳实践提示。
    猜你喜欢
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2015-06-18
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多