2017-07-21 37 views
1

是否可以在放大/縮小事件中保留相同的地圖中心?無論是使用滾輪,雙擊還是使用縮放控件,它都應該具有相同的功能。Google Maps Api - 不要更改地圖中心縮放

我注意到在使用滾輪放大/縮小時,地圖上的鼠標指針位置存在偏差,我沒有在文檔上找到任何選項,但是重寫該偏移將是理想選擇。

here is a simple fiddle我如何初始化我的地圖。

var map = new google.maps.Map(document.getElementById("map_div"), { 
    center: new google.maps.LatLng(33.808678, -117.918921), 
    zoom: 15, 
    disableDefaultUI: true 
    }); 
+0

有沒有API函數來做到這一點。但是沒有任何理由可以通過關閉API實現並自己實現所需的功能。 – geocodezip

+0

我很害怕沒有辦法做到「開箱即用」,但我會研究它。謝謝。 – randomguy04

+0

你爲什麼想要?在其他網站上與Google地圖API進行互動的用戶知道,使用滾輪進行縮放時,會偏向其指針所在的位置。重寫該功能只會讓用戶煩惱/激怒你。也就是說,你可以禁用mapOptions中的滾輪縮放,然後聽自己的滾輪,並執行像'map.setZoom(map.getZoom()+ 1)'這會導致縮放而不重新中斷。 – Adam

回答

1

繼@亞當的意見建議,我實例化地圖,並添加事件偵聽器來處理與我自己的實現這些事件時,禁用滾輪縮放,再加上雙擊縮放。

這裏是一個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"); 
    }); 
}); 
相關問題