В настоящее время я работаю над проектом Cordova, в котором активно используется плагин Cordova GoogleMaps 1.4.0 .
Я использую 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.