d3.js全局地图中的设置点
Setting points in a d3.js Global Map
我遇到的主要问题是,当我尝试在地图内绘制点时,当创建cx和cy坐标时,它显示为null,但如果你检查它,补丁,从我的角度来看,是正确的。
d3.json(meteorites, function(meteorite){
console.log("meteorite", meteorite.features);
svg.selectAll("circle")
.data(meteorite.features)
.enter()
.append("circle")
.attr({
cx: function(d){ return projection(d.geometry.coordinates[0], d.geometry.coordinates[1])[0];},
cy: function(d){ return projection(d.geometry.coordinates[0], d.geometry.coordinates[1])[1];},
r: 5,
fill: "red"
});
如果你想看我写的东西这里是我的codepen的链接http://codepen.io/DiazPedroAbel/pen/bwoBZd
我也一直在尝试没有投影,但结果是相同的,null,但如果我做一个console.log()我得到了我期待的结果。可能我在这里误解了什么,这是我第一次在d3中绘制地图。
似乎JSON文件中有一些条目不包含geometry
对象和伴随的geometry.coordinates
数组,导致脚本失败。我建议你在附加.data()
时实现一个基本的过滤器,以确保你只处理具有其地理坐标定义的节点,即,而不是简单地具有以下内容:
.data(meteorite.features)
& help;您可以使用.filter()
从对象数组中清除没有geometry
对象或定义的geometry.coordinates
数组的条目:
.data(meteorite.features.filter(function(d) {
return d.geometry && d.geometry.coordinates;
}))
参考更正后的CodePen示例,更新了以下代码块:
d3.json(meteorites, function(meteorite){
svg.selectAll("circle")
.data(meteorite.features.filter(function(d) {
return d.geometry && d.geometry.coordinates;
}))
.enter()
.append("circle")
.attr({
cx: function(d){ return projection(d.geometry.coordinates)[0];},
cy: function(d){ return projection(d.geometry.coordinates)[1];},
r: 5,
fill: "red"
});
});
相关文章:
- “可绘制地图”设置地图选项“纬度-经度”
- 动态设置谷歌地图缩放
- 使用谷歌地图api计算距离并将其设置在表格中<td>
- 使用D3.js和GeoJson在地图上的某些坐标上设置一个小图像
- 将谷歌地图中的平移边界设置为图像覆盖
- 为位于路线上的谷歌地图标记(起点和终点)设置一个信息窗口
- 将边界设置为overlayImage谷歌地图
- 如何在地图上设置当前位置中心
- Bing地图图钉宽度设置会将图钉从地图位置移开
- 在地图加载/页面加载时,我想将地图设置为当前地理位置,但不想在地图上显示定位图标
- 从结果集中自动设置谷歌地图缩放
- 谷歌地图标记在通过变量设置标记和经度时不保持不变
- 如何在谷歌地图中设置多个信息窗口,但使用这种特定的JavaScript方法
- jquery ui地图设置缩放级别
- 获取/设置地图图像鼠标位置
- 在Cartodb中设置地图平移限制
- Google地图动态设置地图对象的样式
- 如何设置地图的缩放以覆盖所有可见的标记
- Gmaps4rails -如何设置地图语言
- 如何在加载的GeoJSON功能上设置地图中心,或者在加载GeoJson完成后使用3.16 JavaScript API