去年,我使用Mapnik 库(服务器端、位图/平铺)对 web 地图进行了几次实验。现在我正在尝试使用带有 d3.js 的向量客户端方法来复制相同的实验。
我有一张地图(约 680 个形状),zoom
速度很慢而且pan
很迟钝( Mike Bostock 的这个例子效果很好)。我怀疑问题出在zoommove
回调中,selectAll("path").attr("d", path)
耗时太长。
function zoommove() {
projection.translate(d3.event.translate).scale(d3.event.scale);
mapa.selectAll("path").attr("d", path);
console.log('zoommove fired...');
}
问题:
- 我在这里做错了吗?
- 我该怎么做才能优化性能?
地图是这样的(这里是 jsfiddle):
数据源为 topojson 格式。它被简化了,可能已经太多了,因为有些形状没有关闭:
[更新]
看起来即使在没有简化标志的情况下运行 topojson 时也会出现开放几何的问题,我仍在调查。我会很感激这里的任何线索,文档不是很详细。