jVectorMap:如何根据坐标动态添加标记?

5
我有一张从SVG文件转换而来的地图,现在我想在鼠标光标位置上添加标记。但是标记放置在错误的位置,并且它们没有遵循任何规则,所以我无法正确监视和修改它们。
从这个例子中:http://jvectormap.com/examples/mall/ 我知道我们可以通过它们的坐标将标记放在地图上,而不是通过地图经度和纬度。但是它们被放置在初始化地图时,而我想每次单击鼠标时动态地放置标记。
从这个例子中: http://jvectormap.com/examples/reverse-projection/ ,我们可以将标记放在鼠标光标位置,但地图需要插图和投影(将e.offsetX和e.offsetY转换为经度和纬度),而我的地图是从SVG文件定制的,因此这些信息都缺失了。
所以你能帮我吗:
1. 如何确定自定义地图的插图和投影?(我使用http://svgto.jvectormap.com/转换我的SVG文件,但它只返回路径)
2. 在不使用地图经度和纬度的情况下,如何将标记放置在鼠标光标位置上?
非常感谢。
3个回答

5

当添加标记时,只需在配置中提供带有所需坐标的 coords 键,而不是 latLng:

map.addMarker(markerIndex, {coords: [100, 100]});

1
谢谢@bjornd,我试过了。但是标记并没有放置在光标位置上。我使用了: 'map.addMarker(markerIndex, {coords: [e.offSetX, e.offsetY]});' - Đinh Hồng Châu

3

我找到了一个对我有效的解决方案

map.addMarker(markerIndex, {coords: [(e.offsetX / map.scale) - map.transX, (e.offsetY / map.scale) - map.transY]});

无论是否缩放,位置都会被补偿。

Lorenzo


-2
我有一个建议。如果你要使用jVectorMap插件来处理矢量地图,可以看一下这个:AmMap。我用它来解决了我在使用jVectormap时遇到的几乎所有问题。此外,它还提供了许多令人惊叹的功能和灵活的配置。

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - user1752532
@gerdi 抱歉,我不知道那个规则。实际上,我通过结合几种方法来操作SVG到绝对坐标并自定义jVectorMap插件来解决了这个问题。很难告诉你细节,因为已经过去一年了。然后我发现了AmMap(是商业JS库),但我认为它只是个人分享,供那些想要更多选项的人使用。 - Đinh Hồng Châu
没关系..我不认为你*不允许,但作为评论似乎更合适,而不是实际答案,因为它没有直接回答问题。 - user1752532

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接