【发布时间】:2015-11-06 09:54:43
【问题描述】:
过去几天我一直在努力优化 D3 地图的性能,尤其是在移动设备上。我正在使用 SVG 转换进行缩放和平移,但观察到以下情况:过度杀伤来自用于伪造国家之间间距的路径笔划。
我上传了一对示例地图进行比较:
http://www.nicksotiriadis.gr/d3/d3-map-1.html
http://www.nicksotiriadis.gr/d3/d3-map-2.html
两张地图之间的唯一区别是沿乡村路径的笔划路径,性能差异在桌面设备上甚至很明显 - 但在移动设备上更为明显。删除路径笔划使移动性能变得轻而易举..
我尝试了各种 svg 笔触形状渲染选项,但没有显着效果。
现在回答问题。有没有什么办法可以去掉每个国家的细边框来伪造国家之间的间距而不是使用笔划?
如果其他人有不同的建议,我很乐意听到!
更新:附上说明照片。
我画的是这个。红色箭头指向国家关节。当在国家路径中添加与背景相同颜色的笔触时(此处以深灰色表示),它会产生国家分离的感觉 - 但是这会严重影响移动设备的性能。我正在寻找的是以某种方式重新塑造国家路径,使它们的边界线位于蓝色箭头所指的位置,但没有中风。
更新 2:人们似乎无法理解我在寻找什么,所以我正在更新这个以使问题更加清晰。
假设原始国家/地区路径显示在此图像的左侧。我正在寻找一种方法,我可以以某种方式向内“收缩”路径,以便新创建的以红色显示的路径在它们之间留下足够的空白空间,从而“模拟”它们之间的笔划。
这样做,额外的笔画层将毫无用处,从而通过仅使用路径而不是路径+笔画来获得性能。
更新 2: 再次您好,我似乎找到了解决问题的一半方法。我设法将 topojson 提取到 shapefile,以我想要的方式编辑 shapefile(使用了一个名为 OpenJump 的程序),但是转换带走了我需要的所有 topojson 属性 - id、国家名称,所以我无法转换回原始topojson。
有人有什么建议吗?
【问题讨论】:
-
你说不需要nicksotiriadis.gr/d3/d3-map-1.html全国各地的浅白边框?
-
恰恰相反;我想在国家之间有间距,但这个间距不使用笔划线。
-
我不明白这个问题。你可以创建一张你想要的图片吗?当我比较它们时,这些地图的速度是相同的。我没有在移动设备上测试。
-
您好,感谢您的关注。我已经更新了问题。
-
除了使用 topojson 之外,可能值得简化路径以减少点数以加快渲染速度。检查这个mourner.github.io/simplify-js
标签: javascript performance d3.js svg