我目前正在组建一个演示应用程序,需要在地图上显示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的。非常感谢任何链接或代码! 谢谢!
答案 0 :(得分:4)
根据我的经验,在地图上同时显示许多标记的唯一真正方法是使用融合表(它确实有一些限制和其他需要解决的挑战)。处理这些标记的所有其他解决方案都涉及某种形式的聚类,或者无法使用广角缩放。
答案 1 :(得分:1)
我假设你不是字面上一次在屏幕上显示28,000个?只有一个子集可见?
如果是这种情况,为什么不用你正在显示的坐标范围发出服务器请求,那么只是绘制那些?有一些地图事件可以让你知道什么时候需要更新标记,你可以避免一次在浏览器中有太多的对象。