0

私の考えは、マップのクリックイベントの処理を使用してマーカーを作成することです。次に、マーカーのクリック イベントを処理して、このマーカーの lat() を表示します。ただし、最終マーカーの lat() は常に Array に表示されます。このエラーを解決できません。この問題を助けてください。ありがとう

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

}

4

1 に答える 1

3

それが完全なコードである場合は、変数の宣言が欠落varしていmarます。

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/

于 2013-03-14T10:31:14.010 に答える