未捕获的typeError:无法从null读取属性'markers'

时间:2014-05-21 15:08:14

标签: javascript google-maps

我无法加载超过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;没有定义?或者只是想另一种解决方案:我已经看过很多分组标记的地图,当放大时,会显示所有单独的标记。我不想这样,但我认为这将是解决方案,你怎么看?请帮忙!

0 个答案:

没有答案