我计划使用svg绘制“地图”(城市,河流,道路等)。因此,所有对象都将在一个svg图像中绘制,只有那些位于可视区域内的对象才会显示(可见)。
问题1:
这是合理的做法吗?或者我会更好地关注需要绘制哪些特定对象?
我想要实现的功能之一是“拖动”地图。它计划如下工作:用户点鼠标光标在地图内的某个地方,按下鼠标按钮并移动鼠标。因此,一些对象将离开可视区域,而其他对象将被绘制。
问题2:
更改可见对象的坐标是否更好,以便根据鼠标移动来移动它们?或者最好更改“可视区域”(猜测,应该可以通过viewbox svg-object参数操作)?
非常感谢!欢迎任何想法!
答案 0 :(得分:3)
对我来说有点像Polymaps。如果您打算提供一个巨大的svg主文档,那么最好使用平铺的polymaps方法。
答案 1 :(得分:0)
我不是一个专业人士,也不是一个非常优秀的程序员,但我之前使用svg地图,我认为这是一个合理的方法,svg可以容纳很多数据,如果你有一个好的渲染器它应该能够跟上。至于问题2,我会说更改视图框,否则你会发现自己更改每个svg对象的坐标,很多人已经为svg图像制作了平移代码,所以做一个快速的谷歌搜索,这应该可以帮助你。
答案 2 :(得分:0)
最好的方法会受到单个 SVG的大小和复杂程度的极大影响。
您可能希望尽早创建一个更大,更复杂的样本地图的快速实验,然后进行简单的平移(您可以先尝试svgpan然后再花时间制作自己的样本地图) 。它不需要是一个完全连贯的地图 - 你可以重复一堆有代表性的形状,并仍然得到一个很好的测试用例。
如果您的示例地图在您关注的浏览器中平滑平移,则可以避免平铺的复杂性(或以其他方式显示整体的部分)。
如果你发现它生涩而缓慢,@ Erik Dahlstrom关于查看Polymaps的建议将是下一个要看的地方(但这涉及更多的服务器端工作,所以避免这样做很好)。