谷歌地图上的大量移动标记

Kas*_*tin 6 google-maps google-maps-api-3 google-maps-markers

我在谷歌地图上有大约200个标记.这并不是那么多,使用默认的google.maps.Marker工厂绘制它们的速度相对较快.

但在我的情况下,每个标记都会不断改变它的位置,所以我必须为它们设置动画,我必须在每个标记后绘制轨迹.其他条件是所有标记都位于约20x20km的小区域内.

这就是为什么我要使用一个大的画布层并在一个循环中重绘它们上的所有标记.我在这里看到三种方式.

  1. 首先是使用google.maps.OverlayView.我们创建绝对定位的canvas元素并将其添加到google.maps窗格overlayLayer.在bounds_changed事件的情况下,我们重新计算画布的位置和大小,并重绘其上的所有标记. 实际上这有点慢 - 如果我们拖动地图太快,则会出现重绘标记的延迟.

  2. 我们使用相对定位的画布而不是绝对定位.之后我们不对bounds_changed事件做任何事情,只在zoom_changed事件上重绘画布. 拖动没有滞后(因为我们拖动画布本身),但是我们必须计算并创建包含所有标记的画布,并且对于最大缩放,它大约是5000x5000px(大量内存).

  3. 我们根本不使用OverlayView,而不是这个,我们只是将一个外部画布悬停在整个地图上,并在bounds_changed事件上重绘标记. 这里我们不会重新计算画布的位置和大小,因此速度要快一些,但在控件下方和tile图层上添加画布似乎很棘手,因此地图移动不会影响它.

那你喜欢什么方式?

UPD.唯一合理的方法是第一个.我花了很多时间来解决涉及这个问题的任务.因此,这里是关于借鉴了很多谷歌的移动地图上的标记(俄语,文章http://habrahabr.ru/post/195950/),并在这里是比较4个不同的引擎演示:HTTP://kasheftin.github .IO/gmaps /