jquery和谷歌地图v3 dragstart和dragend

时间:2014-02-07 22:24:42

标签: jquery google-maps-api-3 drag marker

我正在创建一系列标记并将功能附加到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 !!

1 个答案:

答案 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'偶然,就会在设置监听器时定义该代码块。