javascript - 所有 Google Maps v3 标记的通用事件处理程序

标签 javascript google-maps google-maps-api-3 google-maps-markers marker

我有一张显示 500 个标记的 map ,当用户滚动 map 时,它们会被重新绘制。每个标记都非常复杂——它们被编号并附加了点击、鼠标悬停和鼠标移开(为它们设置动画)事件。这会导致一些性能问题,因为删除和添加这些标记需要花费大量时间。我一直想知道我是否可以为整个 map 附加一次单击、鼠标悬停和鼠标移出事件处理程序,并捕获从那里的标记冒出的事件。这可能吗?它会提高性能吗?

我找到了这个 - How do I make a single event handler for all markers in Google Maps V3? - 更好,但它仍然需要将处理程序分别附加到每个标记。

我还找到了 Google map 数据层 - https://developers.google.com/maps/documentation/javascript/datalayer#add_event_handlers - 看起来整个图层只附加了一个事件,但我不确定它是否没有在内部将其附加到每个标记。我也不确定额外的抽象级别是否会减慢速度。

还有其他解决办法吗?

最佳答案

我们通过在标记上启用“优化”标志解决了所有问题。然后标记在 map Canvas 上呈现,它们在 DOM 中不可见,这也意味着没有事件处理程序直接附加到它们。我们通过在悬停标记时动态创建 div 元素来实现交互性。现在一切都顺畅多了。

关于javascript - 所有 Google Maps v3 标记的通用事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26689124/

相关文章:

javascript - 使用 Javascript 在字符串的多个实例周围包装标签

javascript - 从 a 到 z 的正则表达式验证(某些字符除外)

javascript - jquery-addresspicker 如何使标记移动

r - 使用纬度和经度向量查找 R 中的步行距离

google-maps-api-3 - 用户点击时捕获 Google map 中的坐标

javascript - Rubaxa 可使用 polymer 排序/拖放不起作用,具体取决于显示 :

javascript - 单击禁用和启用 setInterval

javascript - 更改中心时传单 map 变灰

android - getMapAsync() - 调用一次并保存结果,还是每次我需要 map 时调用?

javascript - javascript 有什么方法可以绘制 kml 或 gpx 数据吗?