Подтвердить что ты не робот

Отключить перетаскивание масштабирования в картах Google, нажав на кнопку

Я хочу добавить коды внутри функции disable(), чтобы отключить перетаскивание и масштабирование в API карт Google v3, нажав кнопку "отключить".

<script type="text/javascript">
   var map;

  function initialize() {
var uluru = new google.maps.LatLng(21, 57);
map = new google.maps.Map(document.getElementById("map"), {
  zoom: 6,
  center: uluru,
  mapTypeId: google.maps.MapTypeId.HYBRID
});
}


function disable(){

}

</script>


<body onload="initialize()" >

   <input type="button" id="next" value="disableZoomDrag" onclick="disable()">

</body>
4b9b3361

Ответ 1

Вы можете использовать метод setOptions() на объекте карты:

map.setOptions({draggable: false, zoomControl: false, scrollwheel: false, disableDoubleClickZoom: true});

Если это не мешает масштабированию, вы всегда можете установить минимальный и максимальный масштаб на текущий уровень масштабирования.

Существует также опция disableDefaultUI, которая, вероятно, учитывает все эти события, но может отключить нажатие на существующие элементы.

Ответ 2

@ScottE ответ указал мне в правильном направлении использования map.setOptions(). Однако из документации API я обнаружил, что существует более элегантный набор параметров. Возможно, они новее, чем ответ, но они работают очень хорошо для меня.

function disablePanningAndScrolling()
{
    map.setOptions({
        zoomControl: false,
        gestureHandling: 'none'
    });
}

Это полностью отключает масштабирование и панорамирование.

Чтобы вернуться к нормальному состоянию, просто верните свойства по умолчанию:

function enablePanningAndScrolling()
{
    map.setOptions({
        zoomControl: true,
        gestureHandling: 'greedy' // or 'cooperative'*
    });
}

*: по умолчанию жадность, если страница не прокручивается, кооперативен, когда она есть. Выберите, какая ситуация была в вашем приложении.