添加数千个标记 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的主要内容,如果未能解决你的问题,请参考以下文章
Angularjs - ng-map - Google Maps Javascript API v3 - 如何为多个标记设置最佳缩放