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.