Tôi đã viết một chức năng để thực hiện một "chảo chậm" với Google Maps API v3. Nó sử dụng các bước pan nhỏ cũng như câu trả lời trước đó, mặc dù tôi nghĩ rằng việc triển khai thực hiện đơn giản hơn một chút. Bạn có thể sử dụng hàm easing cho f_timeout().
thông số
bản đồ: đối tượng google.maps.Map bạn
endPosition: mong muốn vị trí để pan đến, google.maps.LatLng
n_intervals: số khoảng chảo, càng có nhiều chuyển tiếp mượt mà hơn nhưng ít hiệu suất hơn
T_msec: tổng thời gian cho khoảng thời gian chậm hoàn thành (mili giây)
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);
};
không may, các điểm đánh dấu thường xuyên biến mất. Có vẻ như quá nhiều chuyển động vi mô cho một bản đồ – djdance
Điều này hoạt động xuất sắc trong trường hợp của tôi, nơi hầu hết các điểm đánh dấu của tôi đã hiển thị trên màn hình. Tôi đã điều chỉnh mẫu codepen. Cảm ơn bạn @ErDmKo! –