我无法加载超过108个标记的Google地图。 当我过滤最多59个标记的值时,地图会完美地加载,但是当我不想过滤de map并希望显示所有标记时,它根本不会加载并通过Google Chrome控制台获取此消息:未捕获的typeError:无法读取属性'标记'关闭null。
这是出现问题的代码的一部分:
var gmap = {
addMarkers: function(jsonData) {
var bounds = new google.maps.LatLngBounds();
for (var i=0; i<jsonData.markers.length; i++) {
var point = new google.maps.LatLng(jsonData.markers[i].latitud, jsonData.markers[i].longitud);
bounds.extend(point);
gmap.createMarker(point, jsonData.markers[i].icontype, jsonData.markers[i].label, jsonData.markers[i].html);
}
gmap.el.fitBounds(bounds);
},
center: function(){
var bounds = new google.maps.LatLngBounds();
for (var i = 0, len = gmap.markers.length; i < len; i++) {
bounds.extend(gmap.markers[i].getPosition());
}
gmap.el.fitBounds(bounds);
return gmap;
},
createMarker: function (point,icontype,title,html) {
if (typeof icontype == 'undefined'){
icontype = 'a';
}
if (typeof html != 'undefined'){
google.maps.event.addListener(marker, 'click', function() {
if (typeof gmap.iw != 'undefined'){
gmap.iw.close();
}
marker.setIcon(marker.getIcon().replace(/pin-([a-c])/,'pin-b'));
gmap.iw = new google.maps.InfoWindow({
content: '<div class="infowindow">'+html+'</div>'
});
gmap.iw.open(gmap.el,marker);
});
}
gmap.markers.push(marker);
return gmap;
},
load: function(idx, elem){
var zoom = 11, options = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
streetViewControl: false
}, createMarker;
gmap.dom = $(elem);
if ($('#js_id_rubro').length){
options.zoom = 11;
options.mapTypeControl = true;
options.mapTypeControlOptions = {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR
}
$.getJSON('/ajax.php','do=get_mapas_rubro&id_rubro='+$('#js_id_rubro').text()+'&filtros='+$('#js_filtros').text(),gmap.addMarkers);
}else{
createMarker = 1;
options.center = new google.maps.LatLng(gmap.dom.data('latitude'),gmap.dom.data('longitude'));
options.zoom = 14;
options.mapTypeControl = false;
可能是因为变量&#39;标记&#39;没有定义?或者只是想另一种解决方案:我已经看过很多分组标记的地图,当放大时,会显示所有单独的标记。我不想这样,但我认为这将是解决方案,你怎么看?请帮忙!