Javascript 加载标记时发生的事件

Javascript 加载标记时发生的事件,javascript,performance,google-maps,google-maps-api-3,Javascript,Performance,Google Maps,Google Maps Api 3,我有25k个标记添加到谷歌地图对象中。问题是这个过程非常慢(即使使用MarkerCluster)。将它们加载到地图需要15秒(js代码在2秒内完成执行,但在地图中显示标记需要额外的15秒)。 我想添加一个微调器,直到它加载完所有标记。您知道地图更改时触发的任何事件吗?或者类似的。 我试着在医生身上处理这些事件,但没有成功 function loadPlaces(places, defaultOptions, clusterizarMarkers, clusterStyles) { loc

我有25k个标记添加到谷歌地图对象中。问题是这个过程非常慢(即使使用MarkerCluster)。将它们加载到地图需要15秒(js代码在2秒内完成执行,但在地图中显示标记需要额外的15秒)。 我想添加一个微调器,直到它加载完所有标记。您知道地图更改时触发的任何事件吗?或者类似的。 我试着在医生身上处理这些事件,但没有成功

function loadPlaces(places, defaultOptions, clusterizarMarkers, clusterStyles) {
    locations = [];
    markers = [];

    for (var i = 0; i < places.length; i++) {

        var unPlace = places[i];
        transformPlace(unPlace);
        unPlace.colorLabelAlerta = getColorPorTipoDeCentro(unPlace.tipoCentro);
        (function () {
            function createMarkerOptions(place, clusterizarMarkers) {
                var posicion = new google.maps.LatLng(place.lat, place.lng);
                var markerOptions = {
                    position: posicion,
                    title: place.name
                };
                if (!clusterizarMarkers) {
                    markerOptions.map = map;
                }

                return markerOptions;
            }

            var location = {};
            location.place = unPlace;
            location.place.id = i;
            location.marker = new google.maps.Marker(createMarkerOptions(unPlace, clusterizarMarkers));
            markers.push(location.marker);
            var icon;
            if (unPlace.tipoCentro === "Centro 4G" && unPlace.diametro && unPlace.diametro > 0) {
                icon = "/myplaces-portlet/img/transparente.png";
            } else if (defaultOptions.iconGenerator) {
                icon = defaultOptions.iconGenerator(unPlace);
            } else if (unPlace.mapIcon) {
                icon = unPlace.mapIcon;
            }

            var iconImage = new Image();
            iconImage.src = icon;

            iconImage.onload = function () {
                location.marker.setIcon(icon);
            };
            iconImage.onerror = function () {
                location.marker.setIcon(defaultOptions.defaultIcon);
            };
            locations.push(location);

            google.maps.event.addListener(location.marker, 'click', function () {
                myplaces.util.ui.places.selecteById(location.place.id);
            });
        })();

        if (unPlace.tipoCentro === "Centro 4G" && unPlace.diametro && unPlace.diametro > 0) {
            //diametro 
            var populationOptions = {
                strokeColor: '#79B800',
                strokeOpacity: 0.6,
                strokeWeight: 1,
                fillColor: '#79B800',
                fillOpacity: 0.25,
                map: map,
                center: new google.maps.LatLng(unPlace.lat, unPlace.lng),
                //radius: Math.sqrt(antenas4g[antena].population) * 100
                radius: unPlace.diametro / 2
            };
            antenaArea = new google.maps.Circle(populationOptions);
            unPlace.circulo = antenaArea;
        }
    }
    if (clusterizarMarkers && markers.length) {
        // var mcOptions = {gridSize: 30, maxZoom: 15};
        var mcOptions = {
            styles: clusterStyles
        };
        mc = new MarkerClusterer(map, markers, mcOptions);
    }

}
函数加载位置(位置、默认选项、集群标记、集群样式){
地点=[];
标记=[];
对于(变量i=0;i0){
icon=“/myplacesportlet/img/transparente.png”;
}else if(defaultOptions.iconGenerator){
icon=defaultOptions.iconGenerator(取消CE);
}else if(unPlace.mapIcon){
icon=unPlace.mapIcon;
}
var iconImage=新图像();
iconImage.src=图标;
iconImage.onload=函数(){
location.marker.setIcon(图标);
};
iconImage.onerror=函数(){
location.marker.setIcon(defaultOptions.defaultIcon);
};
位置。推(位置);
google.maps.event.addListener(location.marker,'click',函数(){
myplaces.util.ui.places.selecteById(location.place.id);
});
})();
如果(unPlace.tipoCentro==“Centro 4G”&&unPlace.diametro&&unPlace.diametro>0){
//钻石
变量填充选项={
strokeColor:“#79B800”,
笔划不透明度:0.6,
冲程重量:1,
填充颜色:'#79B800',
填充不透明度:0.25,
地图:地图,
中心:新的google.maps.LatLng(unPlace.lat,unPlace.lng),
//半径:Math.sqrt(antenas4g[antena]。人口)*100
半径:未定位直径/2
};
Antenarea=新的google.maps.Circle(填充选项);
unPlace.circulo=天线区域;
}
}
if(clusterizarkers&&markers.length){
//var mcOptions={gridSize:30,maxZoom:15};
变量mcOptions={
样式:clusterStyles
};
mc=新标记聚类器(地图、标记、mcOptions);
}
}

从存储中获取标记或将标记添加到地图需要15秒的时间吗?另外,您如何将它们添加到地图中。发布一些示例代码,我们可能还可以帮助您尝试console.time()来计算函数的时间,它在200 msDid中完成。您找到这个问题的解决方案了吗?我也遇到了同样的问题。从存储中获取标记或实际将其添加到地图需要15秒的时间吗?另外,您如何将它们添加到地图中。发布一些示例代码,我们可能还可以帮助您尝试console.time()来计算函数的时间,它在200 msDid中完成。您找到这个问题的解决方案了吗?我也遇到了同样的问题。