Сенсорные события не работают Google Maps API Javascript - PullRequest
0 голосов
/ 19 октября 2019

Следующий код должен позволять двойному касанию на мобильном устройстве имитировать щелчок правой кнопкой мыши на ПК, чтобы добавить булавку на карту Google, но это не так. Я ломал голову, пытаясь понять, почему это не работает. Кто-нибудь видит что-то не так с этим кодом? Тестирование на IOS. Клянусь, этот код работал! Проблема в том, что сенсорные события ничего не делают, карта мигает и не вызывает сброса пин-кода, как это происходит на рабочем столе.

        google.maps.event.addListener(map, 'rightclick', function (event) {
            addMarkerToMap(event.latLng);
        });

        domMap.addEventListener('click', function (e) {
            //map.setZoom(8);
            //map.setCenter(overlay.getPosition()); // set map center to marker position
            mobileAndTabletcheck() && setTimeout(mySingleClickBelovedFunction(e), 200);
        });

        var singleClickInProgess = false;
        function doDoubleClickProcessing(event)
        {
            console.log('dblclick'); 
            isDblClick = true;
            myDlbClickBelovedFunction(event);
        }
        function handleClickONMarker(e)
        {
            if ( singleClickInProgess )
            {
                singleClickInProgess = false;
                doDoubleClickProcessing(e);
            } 
            else
            {
                singleClickInProgess = true;
                setTimeout(checkClickONMarkerStatus,300);
            }       
        }

        function checkClickONMarkerStatus()
        {
            if ( singleClickInProgess  )
            {
                singleClickInProgess = false;
                console.log('single click');
             }
            singleClickInProgess = false;
        }



        function mySingleClickBelovedFunction(e) {
            if (!isDblClick) {
                // DO MY SINGLE CLICK BUSINESS :)  
                //smoothZoom(map, 12, map.getZoom());
            }
            handleClickONMarker(e);
            // DO NOTHING
        }

        domMap.addEventListener('dblclick', function (event) {
            //alert('test');
            if (mobileAndTabletcheck()) {
                isDblClick = true;
                myDlbClickBelovedFunction(event);
            }
        });

        function myDlbClickBelovedFunction(event) {
            //debugger
            console.log(event);

            overlay.setMap(map);

            //Work out the coordinates on the map
            var x = (event.offsetX),
                y = (event.offsetY);

            var point = new google.maps.Point(x, y),
                latLng = overlay.getProjection().fromContainerPixelToLatLng(point);

            addMarkerToMap(latLng);

            overlay.setMap(null);
        }

        // the smooth zoom function
        function smoothZoom(map, max, cnt) {
            if (cnt >= max) {
                return;
            }
            else {
                y = google.maps.event.addListener(map, 'zoom_changed', function (event) {
                    google.maps.event.removeListener(y);
                    smoothZoom(map, max, cnt + 1);
                });
                setTimeout(function () { map.setZoom(cnt) }, 80);
            }
        }```

Thanks!

1 Ответ

0 голосов
/ 05 ноября 2019

О подобной проблеме сообщалось в нашем Общедоступном трекере Google , однако она уже помечена как исправленная. Вы не против пересмотреть запись? Вот проблема:

Если они не похожи, пожалуйста, напишите новую проблему. Обязательно предоставьте нам автономный образец (http://sscce.org), который демонстрирует проблему и включает в себя конкретные шаги по воспроизведению.

Google Public Issue Tracker - это инструмент, используемый внутри Google для отслеживания ошибок и функцийзапросы во время разработки продукта. Он доступен за пределами Google для использования внешними пользователями и пользователями-партнерами, которым необходимо сотрудничать с командами Google по конкретным проектам.

...