risoluzione di questo problema nel 2017
Shrink il rettangolo di selezione un po 'prima di inviarlo al map.fitBounds()
.
Ecco una funzione di compattare un riquadro:
// Values between 0.08 and 0.28 seem to work
// Any lower and the map will zoom out too much
// Any higher and it will zoom in too much
var BOUNDS_SHRINK_PERCENTAGE = 0.08; // 8%
/**
* @param {google.maps.LatLngLiteral} southwest
* @param {google.maps.LatLngLiteral} northeast
* @return {Array[google.maps.LatLngLiteral]}
*/
function slightlySmallerBounds(southwest, northeast) {
function adjustmentAmount(value1, value2) {
return Math.abs(value1 - value2) * BOUNDS_SHRINK_PERCENTAGE;
}
var latAdjustment = adjustmentAmount(northeast.lat, southwest.lat);
var lngAdjustment = adjustmentAmount(northeast.lng, southwest.lng);
return [
{lat: southwest.lat + latAdjustment, lng: southwest.lng + lngAdjustment},
{lat: northeast.lat - latAdjustment, lng: northeast.lng - lngAdjustment}
]
}
usare in questo modo:
// Ensure `southwest` and `northwest` are objects in google.maps.LatLngLiteral form:
// southwest == {lat: 32.79712, lng: -117.13931}
// northwest == {lat: 32.85020, lng: -117.09356}
var shrunkBounds = slightlySmallerBounds(southwest, northeast);
var newSouthwest = shrunkBounds[0];
var newNortheast = shrunkBounds[1];
// `map` is a `google.maps.Map`
map.fitBounds(
new google.maps.LatLngBounds(newSouthwest, newNortheast)
);
Ho un app che fa la stessa cosa di codr: salvare i limiti della mappa in corso nel URL e inizializzazione della mappa dai limiti URL all'aggiornamento. Questa soluzione funziona meravigliosamente per questo.
Perché funziona?
Google Maps fa essenzialmente questo quando fitBounds()
si chiama:
- Centro la mappa sul punto centrale di un dato rettangolo di selezione.
- Ingrandire il livello di zoom massimo in cui il riquadro di visualizzazione dovrebbe contenere i limiti all'interno di della finestra di visualizzazione.
Se i limiti indicati sarebbero esattamente corrispondere alla finestra, Google Maps non ritiene che come "contenente" i limiti, in modo che riduce la mappa di un livello.
fonte
2017-01-19 22:42:14
Mi ci sono voluti più di 16 ore per atterrare qui. Anche se questo non è un bug, ci dovrebbe essere un po 'di lavoro in giro per coloro che stanno cercando di farlo. –