Javascript 在谷歌地图上鼠标向下移动,创建标记并立即拖动,无需释放鼠标按钮

Javascript 在谷歌地图上鼠标向下移动,创建标记并立即拖动,无需释放鼠标按钮,javascript,google-maps-markers,draggable,Javascript,Google Maps Markers,Draggable,我想做的是假设它很简单,但我不能解决它。。。 操作步骤如下: 1-Mousedown=>创建标记 2-能够在不释放鼠标按钮的情况下立即拖动此标记。这是我找不到解决方案的一点 我的代码如下所示: var listenerHandle = google.maps.event.addListener(map, 'mousedown', function(e) { marker = new google.maps.Marker({ position:

我想做的是假设它很简单,但我不能解决它。。。 操作步骤如下: 1-Mousedown=>创建标记 2-能够在不释放鼠标按钮的情况下立即拖动此标记。这是我找不到解决方案的一点

我的代码如下所示:

 var listenerHandle = google.maps.event.addListener(map, 'mousedown', function(e) {

           marker = new google.maps.Marker({
              position: latLng,
              map: map,
              draggable: true
           });

google.maps.event.removeListener(listenerHandle); // to remove the listener 
google.maps.event.trigger(map, 'mouseup'); // this is because the click was first on        the map

// now try to trigger mousedown event because the mouse button must not be released          which should allow the user to move the marker immediatly after having created it.

google.maps.event.trigger(marker, 'mousedown', function(event){
           // process marker mouvements
});

});
这不起作用,因为我必须释放鼠标按钮并向下移动标记才能移动它。 有什么解决办法吗?
许多THX需要您的帮助

一个可能的解决方案是为鼠标移动事件创建额外的事件处理程序,以更新标记位置:

    var listenerHandle = 
            google.maps.event.addListener(map, 'mousedown', function(e) {

        var latLng = e.latLng;

        marker = new google.maps.Marker({
            position: latLng,
            map: map,
            draggable: true
        });

        // to get data about mouse position
        mMoveHandler = google.maps.event.addListener(map, 'mousemove', function(e) {
            marker.setPosition(e.latLng);
        });


        google.maps.event.removeListener(listenerHandle);
    });
此外,地图必须设置为
draggable:false
,因为在鼠标上,地图开始四处移动。
请参见

您可以按下鼠标上的标记。但是,要拖动标记,您需要再次单击以抓取标记并拖动它。

解决方案是为
mousemove
添加一个监听器以更新标记位置,但也为
mouseup
添加第三个监听器,该监听器将删除所有不必要的监听器并重置贴图选项:

var listenerHandle = google.maps.event.addListener(map, 'mousedown', function(e) {

        var latLng = e.latLng;

        marker = new google.maps.Marker({
            position: latLng,
            map: map,
            draggable: true
        });
        
        // map should not be deaggable while you move the marker
        map.setOptions({draggable: false});
    
        mousemoveHandle = google.maps.event.addListener(map, 'mousemove', function(e) {
            // update marker position (move marker)
            marker.setPosition(e.latLng);
        });

        mouseupHandle = google.maps.event.addListener(map, 'mouseup', function(e) {
            // remove listeners from map
            google.maps.event.removeListener(listenerHandle);
            google.maps.event.removeListener(mousemoveHandle);
            google.maps.event.removeListener(mouseupHandle);

            // make map draggable again
            map.setOptions({draggable: true});
        });

});
确保全局声明句柄变量