escribí una función para implementar un "pan lento" con Google Maps API v3. Utiliza pequeños pasos de panorámica así como la respuesta anterior, aunque creo que la implementación es un poco más simple. Puede usar una función de aceleración para f_timeout().
Parámetros
mapa: su objeto google.maps.Map
endPosition: ubicación para desplazarse a deseada, google.maps.LatLng
n_intervals: número de intervalos de pan, más la transición es más fluida pero la menos efectiva
T_msec: el intervalo total de tiempo para completar la panoramización lenta (milisegundos)
var slowPanTo = function(map, endPosition, n_intervals, T_msec) {
var f_timeout, getStep, i, j, lat_array, lat_delta, lat_step, lng_array, lng_delta, lng_step, pan, ref, startPosition;
getStep = function(delta) {
return parseFloat(delta)/n_intervals;
};
startPosition = map.getCenter();
lat_delta = endPosition.lat() - startPosition.lat();
lng_delta = endPosition.lng() - startPosition.lng();
lat_step = getStep(lat_delta);
lng_step = getStep(lng_delta);
lat_array = [];
lng_array = [];
for (i = j = 1, ref = n_intervals; j <= ref; i = j += +1) {
lat_array.push(map.getCenter().lat() + i * lat_step);
lng_array.push(map.getCenter().lng() + i * lng_step);
}
f_timeout = function(i, i_min, i_max) {
return parseFloat(T_msec)/n_intervals;
};
pan = function(i) {
if (i < lat_array.length) {
return setTimeout(function() {
map.panTo(new google.maps.LatLng({
lat: lat_array[i],
lng: lng_array[i]
}));
return pan(i + 1);
}, f_timeout(i, 0, lat_array.length - 1));
}
};
return pan(0);
};
Desafortunadamente, los marcadores occasianally (a menudo) desaparecen. Parece que hay demasiados micro movimientos para un mapa – djdance
Esto funciona brillantemente en mi caso, donde la mayoría de mis marcadores ya están visibles en la pantalla. He adaptado la muestra de codepen. Gracias @ErDmKo! –