繼@亞當的意見建議,我實例化地圖,並添加事件偵聽器來處理與我自己的實現這些事件時,禁用滾輪縮放,再加上雙擊縮放。
這裏是一個working fiddle和代碼解釋:
/*
* declare map as a global variable
*/
var map;
/*
* use google maps api built-in mechanism to attach dom events
*/
google.maps.event.addDomListener(window, "load", function() {
var myMap = document.getElementById("map_div");
/*
* create map
*/
var map = new google.maps.Map(myMap, {
center: new google.maps.LatLng(33.808678, -117.918921),
zoom: 15,
disableDefaultUI: true,
scrollwheel: false,
disableDoubleClickZoom: true
});
//function that will handle the wheelEvent
function wheelEvent(event) {
var e = window.event || e; // old IE support
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); //to know whether it was wheel up or down
map.setZoom(map.getZoom() + delta);
}
function zoomIn() {
map.setZoom(map.getZoom() + 1);
}
//add a normal event listener on the map container
myMap.addEventListener('mousewheel', wheelEvent, true);
myMap.addEventListener('DOMMouseScroll', wheelEvent, true);
//same with the double click
myMap.addEventListener('dblclick', zoomIn, true);
//add center changed listener for testing
google.maps.event.addListener(map, 'center_changed', function() {
console.log("this is what i'm trying to avoid");
});
});
有沒有API函數來做到這一點。但是沒有任何理由可以通過關閉API實現並自己實現所需的功能。 – geocodezip
我很害怕沒有辦法做到「開箱即用」,但我會研究它。謝謝。 – randomguy04
你爲什麼想要?在其他網站上與Google地圖API進行互動的用戶知道,使用滾輪進行縮放時,會偏向其指針所在的位置。重寫該功能只會讓用戶煩惱/激怒你。也就是說,你可以禁用mapOptions中的滾輪縮放,然後聽自己的滾輪,並執行像'map.setZoom(map.getZoom()+ 1)'這會導致縮放而不重新中斷。 – Adam