D3中荷兰的自定义数据地图
custom datamap of the Netherlands in D3
我想在我的网站上添加荷兰各省的数据地图。然而,我以前从未使用过自定义数据映射。我相信我有正确的数据格式(geoJSON)。我把它复制到记事本中并保存为geo_netherland.json.
我试着加载这样的数据图:
var map = new Datamap({
element: document.getElementById('map_netherlands'),
geographyConfig: {
dataUrl: 'data/geo_netherlands.json'
}
});
导致
TypeError: a is null
这是什么意思?调用Datamap时是否应该提供更多参数,json文件是否不好?
您非常接近,但绘制此地图还需要一些参数。
第一个问题是您正在使用dataUrl
,但试图访问本地数据。您实际上应该使用dataJson
(未记录)。
其次,您需要通过scope
参数指定TopoJSON中要使用的几何体。看看您生成的TopoJSON,它恰好是"集合"。
您还需要给容器一个宽度和高度,这样映射就有一些空间可以绘制(否则height
在HTML中默认为0)。
最后,你需要设置一个自定义投影,将地图聚焦在荷兰并放大
所有这些加在一起,JS看起来像:
var map = new Datamap({
element: document.getElementById('map_netherlands'),
scope: "collection",
geographyConfig: {
dataJson: data
},
setProjection: function(element) {
var projection = d3.geo.mercator()
.scale(3000)
.center([0, 52])
.rotate([-4.8, 0])
.translate([element.offsetWidth / 2, element.offsetHeight / 2]);
var path = d3.geo.path()
.projection(projection);
return {path: path, projection: projection};
},
});
有关设置项目和生成自定义数据的详细信息,我建议:http://bost.ocks.org/mike/map/
我强烈建议您查看Bostock的帖子,尤其是他生成TopoJSON并指定--id-property
的帖子,这对于您针对任何特定地区(例如创建choropleth)都是必要的。
正在工作的JSFiddle在这里:http://jsfiddle.net/L767kzpy/4/
相关文章:
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- 使用水豚,i'm无法从href中读取自定义数据-属性
- 在每次文件上传时发送带有放置区的自定义数据.js
- AngularJS -- 创建自定义数据绑定和 ng-repeat
- 如何自定义数据::confirm弹出窗口以提示输入,该输入将附加到请求参数中
- Fullcalendar-我们可以将自定义数据添加到我们的活动Json数据中吗
- 将带有自定义数据的图像上载到服务器
- 使用Cylon.js和SocketIO发送自定义数据
- jqueryUi autocomplete - 自定义数据和显示
- 调用自定义数据属性中的函数
- 如何在post数据中进行ajax调用-->图像和自定义数据(名称和值对)
- 如何使用 JavaScript 使自定义数据属性值成为数字
- 如何通过 KNOCKOUT 的自定义数据绑定使
- 的
- 项最初隐藏
- 需要帮助来定位/修改自定义数据属性
- jQuery - Raphael - SVG - 基于自定义数据的选择器
- 如何在 jquery ui 自动完成自定义数据中删除焦点并显示
- 从拖动元素中获取 HTML5 自定义数据属性
- AngularJs :将 stateParams 值附加到状态对象中的自定义数据
- 获取点击列表视图项的自定义数据属性;弹出;JQM.
- SAP openui5:将自定义数据附加到表列模板时出错