【问题标题】:Markers not showing on google maps谷歌地图上没有显示标记
【发布时间】:2014-01-07 21:43:51
【问题描述】:

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

这是我使用的代码:

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);

控制台在每次单击时都会记录一个新坐标,因此会调用该函数并传递坐标。而且我真的看不出标记代码有什么问题。

那么任何人都可以看到问题吗?

【问题讨论】:

  • 今天访问,我只是看到可能从 initialize() 函数中删除 var 将解决它:)

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


【解决方案1】:

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

在设置标记的map-属性时使用this 而不是map

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

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

说明:

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

【讨论】:

  • 是的,就是这样,谢谢!
【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 2014-07-26
    • 2013-07-22
    • 2021-07-07
    相关资源
    最近更新 更多