Google Maps JS - коснитесь / нажмите, перетащите, запускает масштабирование до максимума - PullRequest
0 голосов
/ 04 июня 2019

Google Maps JS Api, при использовании Chrome с мобильным рендерингом или устройством Android попытка панорамирования карты приводит к увеличению до максимального увеличения.

Я пытался использовать параметры для "handHandling "(жадный, кооперативный, нет, авто), ни один не решает проблему. Я заметил, что в инструментах Chrome Dev есть обработчики событий, связанные с событиями mousedown и touchstart на карте div. Удаление события mousedown исправляет проблему, но не уверен, как применить это программно.

Это код в контроллере AngularJs для карты.

   vm.map;

        angular.element(document).ready(function () {
            var map = document.getElementById('map');
            vm.map = new google.maps.Map(
                map,
                {
                    zoom: 11,
                    minZoom: 5,
                    maxZoom: 16,
                    center: vm.location,
                    fullscreenControl: false,
                    streetViewControl: false,
                    mapTypeControl: false,
                    zoomControl: false,
                    gestureHandling: 'greedy',
                    scrollWheel: false
                }
            );

        });

Вот HTML

<div layout="column" layout-fill layout-align="start center" ng-controller="locationsCtrl as vm">
    <div style="width: 100%;">
        <div layout="column" layout-align="center center" style="position: relative;">

         <div id="map" style="width:100%; height:520px;" ></div>

        </div>
    </div>
</div>

Скрипт карт Google загружается в index.html до загрузки контроллера.

<script src="https://maps.googleapis.com/maps/api/js?v=weekly&key=MY_KEY"></script>

Я ожидаю, что панорамирование / масштабирование будет панорамированием одним пальцем, масштабирование при увеличении или двойном нажатии, но панорамирование одним пальцем или мышью, увеличение до значения maxZoom.

Обновление: Добавлены прослушиватели событий для dragStart, drag и dragEnd, показывающие, что dragEnd не запускается при mouseUp.

1 Ответ

0 голосов
/ 01 июля 2019

Я нашел ответ здесь.

Обработка жестов API Карт Google не работает с материалом AngularJS

 angular.module('myapp', ['ngMaterial', 'ngMessages'])
  .config(function($mdGestureProvider) {
    // For mobile devices without jQuery loaded, do not
    // intercept click events during the capture phase.
    $mdGestureProvider.skipClickHijack();
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...