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