2013-03-14 33 views
0

我的想法是使用地圖處理點擊事件來創建標記。然後處理標記的點擊事件以顯示該標記的lat()。但是,它總是在Array中顯示最終標記的lat()。我無法解決這個錯誤。請幫我解決這個問題。感謝所有關於marker API API v3?

function addMarker(location){ 
var goldStar = { 
    path: google.maps.SymbolPath.CIRCLE, 
    fillColor: "yellow", 
    fillOpacity: 0.8, 
    scale: 1, 
    strokeColor: "gold", 
    strokeWeight: 14 
};  
mar = new google.maps.Marker({ 
    position: location, 
    animation: google.maps.Animation.DROP, 
    icon: goldStar, //or use image 
    title: "Hello", 
    map: map 
}); 
makerArray.push(mar); 
//console.log(makerArray.length); 
//click_Marker(mar); 
google.maps.event.addListener(mar, 'click', function(){ 
     alert(mar.getPosition().lat()); 
});} 

function initialize(){ 
var mapOptions = { 
    zoom: 12, 
    overviewMapControl: false, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
}; 
map = new google.maps.Map(document.getElementById("map"), mapOptions);; 
GetCurrentLocation(map); 

//Hướng dẫn đi 
directionDisplay.setMap(map); 
directionDisplay.setPanel(document.getElementById("direction")); 

getData(); 
showListRestaurant(); 
//Thêm địa điểm vào bản đồ 
google.maps.event.addListener(map, 'click', function(event){ 
     addMarker(event.latLng);  
    }); 

}

回答

3

如果是完整的代碼,那麼你缺少你的mar變量var declartion。

mar = new google.maps.Marker({ 
    position: location, 
    animation: google.maps.Animation.DROP, 
    icon: goldStar, //or use image 
    title: "Hello", 
    map: map 
}); 

應改爲有一個變種開頭

var mar = new google.maps.Marker({ 
    position: location, 
    animation: google.maps.Animation.DROP, 
    icon: goldStar, //or use image 
    title: "Hello", 
    map: map 
}); 

這可以解釋你的問題,因爲每一個要添加標記是對同一個對象的引用,因此每次添加一個新的單擊事件到mar,你實際上正在更新同一個對象的點擊事件。結果是所有的點擊事件都具有相同的值。

這裏有一個工作的jsfiddle:

http://jsfiddle.net/NGja4/50/