Chcę zapisać bieżącą pozycję, w której użytkownik obserwuje i przywraca dane po kilku kliknięciach.uzyskać aktualne ograniczenia latlng?
Jak uzyskać aktualne ograniczenia długości geograficznej, aby można było na nim map.fitBounds?
Chcę zapisać bieżącą pozycję, w której użytkownik obserwuje i przywraca dane po kilku kliknięciach.uzyskać aktualne ograniczenia latlng?
Jak uzyskać aktualne ograniczenia długości geograficznej, aby można było na nim map.fitBounds?
Oto kod, aby uchwycić aktualną mapę granic, na „bounds_changed” wydarzenie
google.maps.event.addListener(map, 'bounds_changed', function() {
try {
if(initialBounds == null) {
initialBounds = map.getBounds();
}
} catch(err) {
alert(err);
}
});
Następnie można przywrócić na mapie związany przy użyciu tego kodu
google.maps.event.addDomListener(controlUI, 'click', function() {
// map.setCenter(home)
if(initialBounds != null) {
map.fitBounds(initialBounds);
}
});
getBounds()
w Google Maps API v3
Aby uzyskać naszą szerokość i długość geograficzną, musimy przenieść getBounds()
do bounds_changed
detektora zdarzeń.
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 10,
center: new google.maps.LatLng(lat, lng),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListener(map, 'bounds_changed', function() {
var bounds = map.getBounds();
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();
console.log(ne.lat());
console.log(ne.lng());
console.log(sw.lat());
console.log(sw.lng());
});
To wydarzenie jest wywoływane, gdy zmieniły się granice widoczności. Jeśli masz jakieś wywołanie ajax, to za każdym razem, gdy zmienia się położenie mapy, wywołanie ajax zostanie uruchomione.
Lepszym rozwiązaniem w tym przypadku jest przeniesienie getBounds()
do detektora zdarzeń idle
. To zdarzenie jest wywoływane, gdy mapa staje się bezczynna po powiększeniu.
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 10,
center: new google.maps.LatLng(lat, lng),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListener(map, 'idle', function() {
var bounds = map.getBounds();
var ne = bounds.getNorthEast();
var sw = bounds.getSouthWest();
console.log(ne.lat());
console.log(ne.lng());
console.log(sw.lat());
console.log(sw.lng());
});
Wątek lepszą Anser, aby uniknąć wielokrotnych pożarów [Kliknij, aby przejść do odpowiedzi] (http://stackoverflow.com/questions/4338490/google-map-event-bounds-changed-triggered-multiple -czasy-kiedy-przeciąganie) –