Ich bin ziemlich neu in der Google Maps API und habe mich gefragt, ob es eine Möglichkeit gibt, den Zoom an einen bestimmten Ort zu erzwingen, zum Beispiel: die USA.Google Maps API: Erzwingen des Zooms an einen bestimmten Ort
Was ich suche ist eine Art zu simulieren, die Art von Zoom in Wirkung der Maus Scrollrad, wenn der Cursor in den USA ist, wenn Sie mit dem Scrollrad Rad, wird die Mitte in Richtung zu bewegen der Mauszeiger.
Ich habe versucht, das 'zoom_changed' Ereignis und das Ändern der Mitte dynamisch, aber da es nicht auf einem Desktop (Gerätemodus) ausgeführt wird, wird das Ereignis nur am Ende ausgelöst (source).
Hier ist mein Code:
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;
}
Ich versuchte es während der ‚drag‘ Ereignis zu tun, weil es immer wieder ausgelöst wird, aber es funktioniert nicht. Ich denke, das liegt daran, dass das Ereignis sehr schnell ausgelöst wird und die Variablen newZoom und currentZoom fast immer den gleichen Wert haben. Oder vielleicht wird im Gerätemodus die Zoom-Variable von Google Maps API am Ende eines Ereignisses aktualisiert. Ich nehme nur an, ich weiß es nicht.
Gibt es eine Möglichkeit zu erreichen, was ich will? Ich dachte daran, das Schwenken zu deaktivieren, wenn 2 Finger erkannt werden oder vielleicht vom Gerätemodus in den Nicht-Gerätemodus wechseln, aber ich habe nichts darüber gefunden.
Vielen Dank im Voraus.
Sie könnten sich die Mühe sparen und nur dazu dienen, Fliesen der USA, Auf diese Weise konnte der Benutzer nicht aus den USA schauen, auch wenn er es wollte. –
Bitte überprüfen Sie meine Antwort, wenn es geholfen hat und wenn es nicht bitte posten Sie Ihre eigene Antwort. –