0

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

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

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

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

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

4

1 回答 1

0

有几件事情需要考虑。

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

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

2:如果你想创建一个平铺层,这意味着你使用的是位图信息而不是矢量信息。可能有一些适合您的方法:

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

元素数量的限制主要与浏览器有关,而不是 Bing 地图平台,如果您在 IE8 中尝试使用其他地图控件进行相同的操作,您将获得与您的用例直接相关的同样糟糕的体验。

于 2013-01-28T08:05:48.597 回答