如何处理必应地图中的大量图钉



我正在使用带有Ajax的Bing Maps,我有大约80,000个位置可以将图钉放入其中。该功能的目的是允许用户搜索路易斯安那州的餐馆,然后单击图钉以查看运行状况检查信息。

显然,一次在地图上有 80,000 个图钉并没有多大好处,但我正在努力找到解决这个问题的最佳解决方案。另一个问题是这些地点之间的距离非常小(所有80,000个都在路易斯安那州)。 我知道我可以使用聚类来防止地图混乱,但似乎这仍然会导致性能问题。

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

感觉我走错了路。 有没有更好的方法来管理如此大量的数据? 最好尝试最初加载所有点,然后手头有数据,而不必每次地图移动时都命中我的 Web 服务。 如果是这样,我将如何去做?

我无法

找到问题的答案,这通常意味着我问错了问题。如果有人能帮助我找出正确的问题,将不胜感激。

好吧,我对此实施了一种略有不同的方法。这只是一个有趣的练习,但我使用 HTML5 画布在 Bing 地图中显示我的所有数据(大约 140.000 点)。

我之前将所有数据加载到客户端。然后,我大大优化了绘图过程,将其附加到"Viewchange"事件(在视图更改过程中一直触发)。

我已经写过这个博客。你可以在这里查看。

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


无论如何,如果您不仅限于Bing Maps,另一种选择是使用Leaflet之类的。它允许您创建一个画布层,该层是基于磁贴的层,但使用 HTML5 画布在客户端呈现。它开辟了一系列新的可能性。例如,在 GisCloud 中查看此地图。


另一种选择,虽然更适合静态数据,是使用一种称为UTFGrid的技术。开发它的小伙子们当然可以比我更好地解释它,但它可以通过女性表现来扩展尽可能多的分数。它包括一个包含您的信息的切片图层,以及一个随附的 json 文件,其中包含描述切片上功能的"ascii-art"文件。然后,使用名为wax的库,它可以提供完整的鼠标悬停,鼠标单击事件,而不会对性能产生任何影响。

我也写过博客。

我认为如果你

能侥幸使用它,集群将是你最好的选择。 您说您尝试使用群集,但它仍然导致性能问题? 我在 V7 交互式 SDK 上用 80000 个数据点对其进行了测试,它似乎表现良好。 通过转到链接并更改Load module - clustering选项卡中的行来自己测试:

TestDataGenerator.GenerateData(100,dataCallback);

TestDataGenerator.GenerateData(80000,dataCallback);

然后点击Run按钮。 有这么多数据点,我似乎可以接受性能。

相关内容

  • 没有找到相关文章

最新更新