Javascript 无法将/project坐标解析到JSON

Javascript 无法将/project坐标解析到JSON,javascript,d3.js,geojson,Javascript,D3.js,Geojson,我只是想在json地图上画一组圆圈,根据我通过csv解析的纬度和经度坐标,使用动态cx和cy属性 值得一提的是,我已经很久没有遇到这个问题了,几乎是在我对d3完全陌生的时候。我通读了所有相关的帖子,回顾了初学者教程(毫不羞耻),但我仍然不明白我做错了什么。请看一下,它很短,关键线是67-68。您可以在这里找到我的json映射: 您会注意到,没有附加圆。据我所知,我以正统的D3.js方式添加了圆圈: 创建一个空的选择 将数据绑定到doms 从数据中附加视觉效果 如果我做了什么蠢事,无论如何,把它

我只是想在json地图上画一组圆圈,根据我通过csv解析的纬度和经度坐标,使用动态
cx
cy
属性

值得一提的是,我已经很久没有遇到这个问题了,几乎是在我对d3完全陌生的时候。我通读了所有相关的帖子,回顾了初学者教程(毫不羞耻),但我仍然不明白我做错了什么。请看一下,它很短,关键线是67-68。您可以在这里找到我的json映射:

您会注意到,没有附加圆。据我所知,我以正统的D3.js方式添加了圆圈:

  • 创建一个空的选择
  • 将数据绑定到doms
  • 从数据中附加视觉效果

  • 如果我做了什么蠢事,无论如何,把它灌输给我——我的心理很坚强,我可以接受

    您的数据包含一些坐标,这些坐标不在AlbersUSA投影的明确定义区域内。有关更多详细信息,请参阅我的。由于投影将为这些返回
    null
    ,因此会出现一个错误,从而中断圆的创建

    一种天真的方法是过滤掉无效的坐标:

    var data = rawData.map(function(d)
    {
        return {
            Latitude: +d.latitude,
            Longitude: +d.longitude,
            Place: d.place
        };
    })
    .filter(d => projection([d.Longitude, d.Latitude]));   // filter out null values
    

    这将在地图上显示。不过,您可能需要先检查数据,并尝试事先筛选出来。

    哇,这样做了。好主意,我从来没有想过要从数据的角度来检查它。顺便说一下,如果坐标在海洋中,靠近陆地,它也会是空的?例如夏威夷周围的水域?这取决于坐标。你有具体的例子吗?@ArashHowaida不过,不管它是在海洋还是在陆地上。看看这幅描绘阿拉斯加和夏威夷狭窄边界的图画。再次感谢你,你的帮助是无价的。我还有一个后续问题。在我将
    .filter()
    链接到代码开头的数据映射部分之后,我还想添加另一个过滤器,以便仅在南加州添加圆。所以在append circle部分,在
    .data(data)
    之后,我添加了这个:
    .filter(函数(d){return(Math.abs(d.Latitude-34)