2014-03-05 71 views
0

我有下面的代碼:圍繞地圖在else語句標記

var setPresent = false; 

[...] 

google.maps.event.addDomListener(document.getElementById("getCoordinates"), 'click', function() { 
    if(setPresent == false) { 
     var coordinatesMarker = new google.maps.Marker({ 
     position: map.getCenter(), 
     map: map, 
     animation: google.maps.Animation.DROP, 
     draggable: true  
     }); 
     setPresent=true; 
    } else { 
     map.setCenter(coordinatesMarker.getPosition()); 
     coordinatesMarker.setAnimation(google.maps.Animation.BOUNCE); 
    } 

    }); 

標記添加一次,但這個「別人」塊之後不工作。其他說明有什麼問題?

回答

1

你的問題是你在你的函數var coordinatesMarker中創建了一個局部變量,它只響應於第一次單擊事件而存活。這不是一個全局變量。所以當你再次點擊你的元素時,else語句會被執行(對嗎?),但是當你嘗試和做coordinatesMarker.getPosition()時它不知道變量coordinateMarker是什麼。

解決此問題的一個快速方法是在宣告setPresent的同時使coordinateMarker成爲全局變量。然後在你的事件監聽器中,你要麼創建一個新的標記或更新其座標。

像這樣:

+0

是的,但我不想在啓動應用程序創建它。我想在用戶點擊按鈕時添加標記... – Djent

+0

@Djent看到我更新的答案 – duncan