未捕获的TypeError:无法读取属性' getZoom'未定义的

时间:2015-05-22 13:35:43

标签: google-maps

我是谷歌地图的新手,所以请原谅这是一个愚蠢的问题。

我正在尝试将标记群集选项与Google地图一起使用

这是我的代码

var map;
var global_markers = [];
var markers = [
    [37.09024, -95.712891, 'trialhead0'],
    [37.09024, -95.712891, 'trialhead1'],
    [37.09024, -95.712892, 'trialhead2']
];
var infowindow = new google.maps.InfoWindow({});

function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(40.77627, -73.910965);
    var myOptions = {
        zoom: 1,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    addMarker();
}

function addMarker() {
    for (var i = 0; i < markers.length; i++) {
        // obtain the attribues of each marker
        var lat = parseFloat(markers[i][0]);
        var lng = parseFloat(markers[i][1]);
        var trailhead_name = markers[i][2];
        var myLatlng = new google.maps.LatLng(lat, lng);
        var contentString = "<html><body><div><p><h2>" + trailhead_name + "</h2></p></div></body></html>";
        var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: "Coordinates: " + lat + " , " + lng + " | Trailhead name: " + trailhead_name
        });
        marker['infowindow'] = contentString;
        global_markers[i] = marker;
        global_markers.push(marker);
        google.maps.event.addListener(global_markers[i], 'click', function() {
            infowindow.setContent(this['infowindow']);
            infowindow.open(map, this);
        });
    }
}
var markerCluster = new MarkerClusterer(map, global_markers);
window.onload = initialize;

当我运行此代码时,我在浏览器控制台下获得以下异常

未捕获的TypeError:无法读取属性&#39; getZoom&#39;未定义的

这是我的小提琴

http://jsfiddle.net/ZLuTg/1023/

如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

map仅在窗口onload处理程序中实例化,但在之前作为参数传递给MarkerCluster构造函数。这就是它未定义的原因。

确保在MarkerCluster之后构建map

http://jsfiddle.net/ZLuTg/1025/