2

我正試圖在地圖上顯示標記。但它沒有顯示出來。標記不會顯示在Google地圖上

這是我使用的代碼:

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

控制檯上的每個記錄單擊一個新的座標,因此函數被調用,座標傳遞。我在標記代碼中看不到任何問題。

所以任何人都可以看到這個問題?

+0

今天訪問,我只是看到,可能是從初始化()函數刪除VAR將解決它:) –

回答

3

map是一個局部變量,只是裏面initialize可見。

使用this代替map當你設置標記的map - 特性:

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

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

說明:

回調將在對象的觸發事件的範圍執行。這裏是Maps實例(因爲點擊監聽器已經應用到了地圖上),this將在回調中引用這個對象。

+0

是的,這是它,THX! – Kiwi

2
markers.push(event.latLng); 

在這裏,你推動latlng,而不是標記。

markers是一個全局範圍的數組變量,而是一個局部變量。
markers數組中,您必須插入每個個體然後對其進行處理。

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