Как начать перетаскивание маркера сразу после добавления маркера в Cordova Googlemaps - PullRequest
0 голосов
/ 06 сентября 2018

В настоящее время я работаю над проектом 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...