我正在创建一系列标记并将功能附加到dragstart和dragend。我终于通过一个简单的改变来使用它,但无法理解为什么我创建的原始代码不起作用。
对于每个标记,运行以下代码:
google.maps.event.addListener(marker, 'dragstart', function(evt){
GLOBAL.startDragPosition = this.getPosition();
});
google.maps.event.addListener(marker, 'dragend', function(evt){
if (confirm("Are You Sure You Want To Move this marker NOW ??")) {
//do something here ...
} else {
marker.setPosition(GLOBAL.startDragPosition);
delete GLOBAL.startDragPosition;
}
});
如果我取消移动,则其他标记会移回原始位置。如果我将else语句更改为以下语句,则可以正常工作 -
} else {
this.setPosition(GLOBAL.startDragPosition);
delete GLOBAL.startDragPosition;
}
任何人都可以告诉我为什么“标记”。符号不是指被拖动的标记?
TIA !!
答案 0 :(得分:1)
此代码:
google.maps.event.addListener(marker, 'dragend', function(evt){
if (confirm("Are You Sure You Want To Move this marker NOW ??")) {
//do something here ...
} else {
marker.setPosition(GLOBAL.startDragPosition);
delete GLOBAL.startDragPosition;
}
});
封闭是如何工作的。 marker
变量实际上并未传递到function(evt) {}
。我的预感是你多次在其他地方定义标记。将该函数视为一个代码块,一旦在标记上观察到'dragend'
偶然,就会在设置监听器时定义该代码块。