纬度/纬度位置的鼠标事件,而不在必应地图 AJAX 中使用图钉



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

为了解决这个问题,我正在创建一个自定义TileLayer谁的源进入我们的服务器,并在那里构建磁贴以使我们的图钉显示在磁贴上。到目前为止一切顺利,除了现在我不知道如何为瓷砖上的"图钉"做MouseOver事件。

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

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

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

有几件事需要考虑。

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

如果必须使用聚类分析,

则应使用服务器端聚类分析来完成此操作,因此只需下载能够在地图控件上显示的内容,这将减少需要下载的数据量,优化客户端的性能(仅需要管理的元素数量较少)。

2:如果要创建磁贴层,则表示您使用的是位图信息而不是矢量信息。可能有一些适合您的方法:

  • 使用地图单击并获取与您的单击对应的坐标(像素 -> geo),并调用 Web 服务以获取有关应在特定区域显示的事件或元素的完整信息
  • 使用地图单击,但不使用 Web 服务,而是在客户端进行操作。除此之外,您还可以使用 Canvas 元素在地图控件上绘制图钉或信息,以便您可以保持交互并能够根据客户端事件或操作自定义呈现。这不是官方支持的,但它可以很好地工作,具体取决于您的用例。

元素数量的限制主要与浏览器有关,而不是Bing Maps平台,如果您在IE8中尝试与其他映射控件相同的操作,您将拥有与您的用例直接相关的相同不良体验。

最新更新