Отключить перетаскивание масштабирования в картах 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>
Ответы
Ответ 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'*
});
}
*: по умолчанию жадность, если страница не прокручивается, кооперативен, когда она есть. Выберите, какая ситуация была в вашем приложении.