【问题标题】:Mouse Events for lat/lon locations without using PushPins in Bing Maps AJAX?在 Bing Maps AJAX 中不使用 PushPins 的纬度/经度位置的鼠标事件?
【发布时间】:2013-01-23 18:17:59
【问题描述】:

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

为了解决这个问题,我创建了一个自定义TileLayer,它的源转到我们的服务器,并且构建了磁贴以使我们的图钉显示在磁​​贴上。到目前为止一切都很好,只是现在我不知道如何为图块上的“图钉”执行MouseOver 事件。

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

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

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

【问题讨论】:

  • 我在交互式 SDK 上尝试了 5000 个带有图标的图钉,性能不是很好,但在我的机器上仍然可以使用。您的自定义图钉只是带有图标的图钉还是 html 内容图钉。每次视图更改时,必应地图是否会不断尝试获取图钉图标图像?您也可以尝试图钉聚类。
  • 由于引脚可能会移动(我们的服务调用被重新定位到新的纬度/经度),我们每 10 秒更新一次。我们正在使用一个集群模块,每次我们调用它setData 它都会清除旧数据并添加新数据。这种不断删除和重新添加使 IE 陷入困境的引脚是我们之前向 Microsoft 提出的问题,但他们仍然没有修复它。它们只是带有图标的图钉。此外,我们希望改进的最大性能下降是在 IE 上。 Chrome 当然可以很好地处理它。

标签: javascript dom-events bing-maps


【解决方案1】:

有几件事情需要考虑。

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

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

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

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

元素数量的限制多半是浏览器的问题,与Bing Maps平台无关,如果你在IE8中用其他地图控件尝试同样的事情,你会有同样糟糕的体验,直接关系到你的使用案子。

【讨论】:

    猜你喜欢
    • 2012-01-25
    • 2012-02-13
    • 1970-01-01
    • 2012-12-08
    • 2015-05-06
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多