在Cordova Googlemaps中添加标记后,如何立即立即开始拖动标记

时间:2018-09-06 19:43:46

标签: javascript google-maps cordova

我目前正在从事一项Cordova项目,该项目大量使用了Cordova GoogleMaps 1.4.0 Plugin

由于我无法负担重构的遗留代码,因此我正在使用1.4.0。

我想做的是允许用户添加标记,并开始以一个运动/手势将标记拖动到新位置。

到目前为止,我一直在使用addEventListener和类似api的插件实现。根据该插件的googlemaps-cdv-plugin.js文件,它似乎是本机addEventListener和类似api的包装。

到目前为止,这是我的代码:

//window.$map.getMap() returns the actual plugin's map object
window.$map.getMap().addEventListener(
    plugin.google.maps.event.MAP_LONG_CLICK, 
    function(latLng, map) { 
        map.addMarker(
            {position:latLng, draggable:true}, 
            (entity) => { 
                entity.addEventListener(
                    plugin.google.maps.event.MARKER_DRAG_END, 
                    () => { 
                        console.log("end"); 
                    }
                ); 
                //also tried plugin.google.maps.event.MARKER_DRAG_START
                entity.trigger(plugin.google.maps.event.MARKER_DRAG);
            }
        );
    }
);

此代码的作用是在添加标记之后,地图仍处于拖动状态。结果,现在完成的任何动作或手势都将应用于地图,而不是新的标记。

话虽如此,trigger函数运行正常。使用以下代码...

//window.$map.getMap() return the actual map.
window.$map.getMap().addEventListener(
    plugin.google.maps.event.MAP_LONG_CLICK, 
    function(latLng, map) { 
        map.addMarker(
            {position:latLng, draggable:true}, 
            (entity) => { 
                entity.addEventListener(
                    plugin.google.maps.event.MARKER_CLICK, 
                    () => { 
                        console.log("click"); 
                    }
                ); 
                entity.trigger(plugin.google.maps.event.MARKER_CLICK);
            }
        );
    }
);
标记出现在地图上后,会立即在控制台上打印

“单击”。

如何在没有第二个动作/手势的情况下将动作/手势作为拖动事件应用到标记?

我需要同时支持iOS和Android。

0 个答案:

没有答案
相关问题