我有以下代码:
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);
}
});
Marker只添加一次,但在此“else”块之后无效。其他说明有什么问题?
答案 0 :(得分:1)
您的问题是您在函数var coordinatesMarker
中创建了一个局部变量,该变量仅在响应该第一次单击事件时存活。它不是一个全局变量。那么当你再次单击你的元素时,else语句会被执行(对吗?)但是当你尝试coordinatesMarker.getPosition()
时它不知道变量coordinateMarker是什么。
解决此问题的一种快速方法是在声明setPresent的同时使coordinateMarker成为全局变量。然后在您的事件监听器中,您要么创建新标记,要么更新其坐标。
像这样:
var setPresent = false;
var coordinatesMarker;
[...]
google.maps.event.addDomListener(document.getElementById("getCoordinates"), 'click', function() {
if(setPresent == false) {
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);
}
});