我目前正在从事一项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。