在Bing Maps AJAX中不使用PushPins的lat / lon位置的鼠标事件?

时间:2013-01-23 18:17:59

标签: javascript-events bing-maps

我为一家车队追踪公司工作,当我们将代表服务电话的所有图钉放在地图上时,Bing地图整体速度减慢到无法使用的速度。我们推测它与拖动地图时必须移动的DOM元素的数量有关。我们可能会在地图上同时拥有数十辆汽车和数百个服务电话。

为了解决这个问题,我正在创建一个自定义TileLayer,其源代码将转到我们的服务器,并且构建了瓷砖以使我们的图钉显示在图块上。到目前为止一直很好,除了现在我不知道如何为瓷砖上的“图钉”做MouseOver事件。

我正在寻找一种方法来在地图上的某些位置引发鼠标事件而不添加DOM元素。

一个肯定的,但可能非常缓慢的方法,就是在整个地图对象上有一个MouseOver事件,它将看到鼠标接近哪个服务调用。如果鼠标足够接近,它可以通过这种方式调用事件。我真的想避免这样做。

我尝试添加具有定义高度/宽度且没有图标的PushPins,希望有一个易于移动的元素(一个不需要重绘的元素)可以触发鼠标事件,但无济于事。没有事件发生。

1 个答案:

答案 0 :(得分:0)

有几件事需要考虑。

1:你应该在这么小的地图上显示那么多信息吗?我的意思是,网络地图的最佳做法建议以最佳方式保持可读性,因此群集可能是一个有趣的选项,但最重要的是,应该重新考虑用例场景,以便在跟踪场景中选择一个车辆或人员后仅显示交互式图钉。

如果必须使用群集,则应使用服务器端群集完成此操作,因此您只需下载能够在地图控件上显示的内容,这将减少需要下载的数据量,将优化客户端的性能(只需要管理的少量元素)。

2:如果要创建切片图层,这意味着您正在使用位图信息而不是矢量信息。可能有一些方法适合你:

  • 使用地图点击并获取与您的点击相对应的坐标(像素 - >地理位置)并调用网络服务以获取有关应在特定区域显示的事件或元素的完整信息
  • 使用地图点击,而不是使用网络服务,在客户端进行操作。除此之外,您可以使用Canvas元素在地图控件上绘制图钉或信息,这样您就可以保持交互并能够根据客户端事件或操作自定义渲染。这不是官方支持的,但根据您的使用情况,它可以很好地工作。

元素数量的限制主要与浏览器有关,而不是Bing Maps平台,如果你在IE8中使用其他地图控件尝试相同的东西,你将会遇到与你的使用直接相关的相同不良体验案件。