我對Google Maps API頗爲陌生,並且想知道是否有辦法強制放大到特定位置,例如:美國。Google Maps API:強制放大到特定位置
我在尋找的是一種模擬鼠標滾輪效果的縮放方式,如果光標在美國,當您使用滾動輪放大時,中心會開始朝向光標。
我試着使用'zoom_changed'事件並動態地改變中心,但由於它沒有在桌面(設備模式)下運行,所以事件只在最後觸發(source)。
這裏是我的代碼:
var map;
var centerUS;
var currentCenter;
var currentZoom;
function initMap() {
//define Map
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 0, lng: 0},
zoom: 3,
disableDefaultUI: true
});
//limit the zoom
map.setOptions({ minZoom: 3, maxZoom: 10 });
//initialization of variables
currentZoom = map.getZoom();
currentCenter = map.getCenter();
centerUS = new google.maps.LatLng(40, -100);
//add the listener for zooming in
map.addListener('zoom_changed', function() {
zoomInTheUS();
});
}
function zoomInTheUS() {
//get new values
var newZoom = map.getZoom();
currentCenter = map.getCenter();
//if the user is zooming in
if (newZoom > currentZoom) {
//difference between the current center and the center of the US
var changeLat = centerUS.lat() - currentCenter.lat();
var changeLng = centerUS.lng() - currentCenter.lng();
//approach the center of the US by a factor of 10% of the distance
var newLat = currentCenter.lat() + changeLat * 0.1;
var newLng = currentCenter.lng() + changeLng * 0.1;
//define new center and pan to it
var newCenter = new google.maps.LatLng(newLat, newLng);
map.panTo(newCenter);
}
//actualize the value of currentZoom
currentZoom = newZoom;
}
我想,因爲它是重複觸發「拖拽」事件中做到這一點,但它不工作。我認爲這可能是因爲事件觸發得非常快,而newZoom和currentZoom變量幾乎總是具有相同的值。或者,也許在設備模式下,Google Maps API中的縮放變量會在事件結束時刷新。我只是假設,我不知道。
有沒有辦法實現我想要的?我想在檢測到2個手指或者可能從設備模式切換到非設備模式時禁用平移,但我還沒有發現任何有關它的內容。
預先感謝您。
你可以保存自己的麻煩,只服務於美國的瓷磚,即使他們想要,用戶也不會看到美國以外的地方。 –
請檢查我的答案,如果它幫助,如果它沒有請張貼您自己的答案。 –