添加数千个Markers Google Map API V3

时间:2012-03-30 14:08:30

标签: google-maps google-maps-api-3 google-maps-markers google-fusion-tables

我目前正在组建一个演示应用程序,需要在地图上显示28,000个标记,而不使用任何类型的聚类。问题是,将标记添加到地图中需要很长时间才能使浏览器崩溃!这是当前的流程

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

  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的。非常感谢任何链接或代码! 谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

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