如何处理Bing Maps中的大量图钉

Jus*_*tin 6 ajax bing-maps pushpin

我正在使用带有Ajax的Bing Maps,我有大约80,000个位置来放置图钉.该功能的目的是允许用户搜索路易斯安那州的餐馆,然后单击图钉以查看健康检查信息.

显然,一次在地图上有80,000个引脚并没什么好处,但我很难找到解决这个问题的最佳方法.另一个问题是这些位置之间的距离非常小(所有80,000都在路易斯安那州).我知道我可以使用群集来防止地图混乱,但似乎仍然会导致性能问题.

我目前要做的是在某个缩放级别之前不显示任何引脚,然后只显示当前视图中的引脚.我目前正在尝试这样做的方法是使用viewchangeend事件来查找缩放级别和地图的边界,然后查询数据库(通过Web服务)以查找该范围内的任何点.

我觉得这样做的方式不对.有没有更好的方法来管理这么多的数据?尝试最初加载所有点然后手头有数据而不必每次地图移动时都要点击我的网络服务会更好吗?如果是这样,我该怎么办呢?

我无法找到问题的答案,这通常意味着我在问错误的问题.如果有人能帮我找出正确的问题,我将不胜感激.

pso*_*usa 9

好吧,我已经实现了一个稍微不同的方法.这只是一个有趣的练习,但是我使用HTML5画布在Bing Maps中显示我的所有数据(大约140,000点).

我以前将所有数据加载到客户端.然后,我已经优化了绘图过程,以至于我将它附加到"Viewchange"事件(在视图更改过程中一直触发).

我在博客上写过这个.你可以在这里查看.

我的例子没有相互作用,但可以轻松完成(应该是博客文章的一个很好的主题).因此,您可以手动处理事件并自己搜索相应的点,或者,如果要绘制的点数和/或缩放级别低于某个阈值,则显示常规图钉.


无论如何,如果您不限于Bing地图,另一个选择是使用Leaflet之类的.它允许您创建Canvas Layer,它是一个基于图块的图层,但使用HTML5画布在客户端渲染.它开辟了一系列新的可能性.在GisCloud中查看地图.


另一种选择虽然更适合于静态数据,但却使用了一种名为UTFGrid的技术.开发它的小伙子当然可以比我更好地解释它,但是它可以根据你想要的数量进行扩展.它包含一个带有您的信息的图块层,以及一个附带的json文件,其中包含描述图块上功能的"ascii-art"文件.然后,使用名为wax的库,它可以在其上提供完整的鼠标悬停,鼠标点击事件,而不会对任何性能产生任何影响.

我也在博客上写过这篇文章.