添加数千个标记 Google Map API V3

Posted

技术标签:

【中文标题】添加数千个标记 Google Map API V3【英文标题】:Adding thousands of Markers Google Map API V3 【发布时间】:2012-04-14 05:36:31 【问题描述】:

我目前正在组合一个演示应用程序,该应用程序需要在地图上显示 28,000 个标记,而不使用任何类型的聚类。问题是,在地图上添加这么多标记需要很长时间,以至于浏览器崩溃!这是当前的过程

-从数据库中检索地图点,包括 LAT 和 LONG(不必进行地理编码) - for 循环遍历每个返回值并执行以下操作:

  var marker = new google.maps.Marker(
                 position: point,
                 animation: google.maps.Animation.DROP,
                 map: map,
                 title: value.Title,
                 icon: icons['store']
             );

             google.maps.event.addListener(marker, 'click', function () 
                 var hidingMarker = currentPlace;
                 var slideIn = function (marker) 
                     $('#Name', info).text(place.Title);
                     $('#Phone', info).text(place.Description);
                     $('#Address', info).text(place.Proper_Address);
                     $('#LastSale', info).text("Last Sale:" + place.Last_Sale);
                     info.animate( right: '0%' );
                 

- 标记插入,用户可以点击其中任何一个来查看一些信息

有没有更有效的方法可以显示 28,000 个,而无需对它们进行聚类?我发现了一些人们之前编写的脚本来处理它,但它们都是针对 api V2 的。非常感谢任何链接或代码! 谢谢!

【问题讨论】:

用例是什么? 28000 个标记对用户有何用处?特别是如果他们应该选择一个来点击它。最好将标记限制在视口中并根据需要添加/删除。 我会说 28k 的任何东西(无论是添加标记还是制作“嘘”)都会使任何浏览器崩溃。所以我的建议:不要这样做。 FusionTables 可能是一种选择 用例是用不同的统计数据绘制世界各地的所有商店颜色坐标。我创建了一个小点来替换默认的较大标记。这只需要一次,它永远不会对我们的用户公开 “它永远不会公开”打开了有关服务条款的问题。 当别人指出你可能没有想到的事情时,当一个混蛋并不是从别人那里获得帮助的最佳方式。 【参考方案1】:

根据我的经验,在地图上同时显示多个标记的唯一真正方法是使用融合表(这确实存在一些限制和其他需要解决的挑战)。处理这么多标记的所有其他解决方案都涉及某种形式的聚类,或者不适用于广角缩放。

http://www.google.com/fusiontables/Home/

【讨论】:

看起来融合表将是我的答案,感谢您将我引向正确的方向 我用过 Fusion Tables,它就是为这类问题而设计的。 目前还不清楚 Fusion Tables 如何成为一个选项。无论如何,谷歌将在 2019 年 12 月将其关闭【参考方案2】:

我假设您不是字面上一次在屏幕上显示 28,000?只会有一个子集可见?

如果是这种情况,您为什么不使用您正在显示的坐标范围发出服务器请求,然后绘制那些?有一些地图事件可以让您知道何时需要更新标记,并且您可以避免一次在浏览器中拥有太多对象。

【讨论】:

我确实需要一次在屏幕上显示 28,000 个。我创建了一个客户标记,它是一个小点,可以防止图像重叠。

以上是关于添加数千个标记 Google Map API V3的主要内容,如果未能解决你的问题,请参考以下文章

google maps api v3 的服务器端集群

Google MAP API v3:显示标记的中心和缩放

在 Google Maps API v3 中删除标记

Angularjs - ng-map - Google Maps Javascript API v3 - 如何为多个标记设置最佳缩放

Google Map API V3-MarkerCluster 未定义

当我一个一个地放下每个标记时,如何在 Google Map V3 Marker 上添加自定义动画?