标记没有在谷歌地图上显示

时间:2013-12-19 10:52:27

标签: javascript google-maps google-maps-api-3 google-maps-markers

我正在尝试在地图上显示标记。但它没有显示出来。

这是我使用的代码:

var map;
var markers = new Array();

function initialize() {
    var mapOptions = {
        zoom: 12,
        center: new google.maps.LatLng(27.9881, 86.9253),
    };
    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

    google.maps.event.addListener(map, 'click', addMarker);
}

function addMarker(event) {
    markers.push(event.latLng);

    marker = new google.maps.Marker({
        position: event.latLng,
        map: map
    });

    console.log(markers);
}

google.maps.event.addDomListener(window, 'load', initialize);

控制台每次单击一个新坐标时都会登录,因此调用该函数,并传递坐标。我无法在标记代码中看到任何问题。

所以有人能看到问题吗?

2 个答案:

答案 0 :(得分:3)

map是一个局部变量,仅在initialize内可见。

设置标记的this - 属性时,请使用map代替map

function addMarker(event) {
    markers.push(event.latLng);

    marker = new google.maps.Marker({
        position: event.latLng,
        map: this
    });
}

说明:

回调将在触发事件的对象范围内执行。这是Maps-instance(因为click-listener已应用于地图),this将在回调中引用此对象。

答案 1 :(得分:2)

markers.push(event.latLng);

在这里你推动了latlng,而不是标记。

markers是一个具有全局范围的数组变量,而marker是一个局部变量 在markers数组中,您必须插入每个单独的marker,然后对其进行处理。

function addMarker(event) {
    var marker = new google.maps.Marker({
        position: event.latLng,
        map: map
    });
    markers.push(marker);
}
相关问题