我为一家车队追踪公司工作,当我们将代表服务电话的所有图钉放在地图上时,Bing地图整体速度减慢到无法使用的速度。我们推测它与拖动地图时必须移动的DOM元素的数量有关。我们可能会在地图上同时拥有数十辆汽车和数百个服务电话。
为了解决这个问题,我正在创建一个自定义TileLayer
,其源代码将转到我们的服务器,并且构建了瓷砖以使我们的图钉显示在图块上。到目前为止一直很好,除了现在我不知道如何为瓷砖上的“图钉”做MouseOver
事件。
我正在寻找一种方法来在地图上的某些位置引发鼠标事件而不添加DOM元素。
一个肯定的,但可能非常缓慢的方法,就是在整个地图对象上有一个MouseOver
事件,它将看到鼠标接近哪个服务调用。如果鼠标足够接近,它可以通过这种方式调用事件。我真的想避免这样做。
我尝试添加具有定义高度/宽度且没有图标的PushPins,希望有一个易于移动的元素(一个不需要重绘的元素)可以触发鼠标事件,但无济于事。没有事件发生。
答案 0 :(得分:0)
有几件事需要考虑。
1:你应该在这么小的地图上显示那么多信息吗?我的意思是,网络地图的最佳做法建议以最佳方式保持可读性,因此群集可能是一个有趣的选项,但最重要的是,应该重新考虑用例场景,以便在跟踪场景中选择一个车辆或人员后仅显示交互式图钉。
如果必须使用群集,则应使用服务器端群集完成此操作,因此您只需下载能够在地图控件上显示的内容,这将减少需要下载的数据量,将优化客户端的性能(只需要管理的少量元素)。
2:如果要创建切片图层,这意味着您正在使用位图信息而不是矢量信息。可能有一些方法适合你:
元素数量的限制主要与浏览器有关,而不是Bing Maps平台,如果你在IE8中使用其他地图控件尝试相同的东西,你将会遇到与你的使用直接相关的相同不良体验案件。