Я написал функцию для реализации «медленного панорамирования» с помощью Google Maps API v3.Он использует маленькие шаги панорамирования, как и предыдущий ответ, хотя я думаю, что реализация немного проще.Вы можете использовать функцию замедления для f_timeout ().
Параметры
map: ваш объект google.maps.Map
endPosition: желаемое местоположение дляpan to, google.maps.LatLng
n_intervals: количество интервалов панорамирования, чем более плавный переход, но менее производительный
T_msec: общий интервал времени для завершения медленного панорамирования (миллисекунды)
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);
};