Sửa vấn đề này vào năm 2017
Shrink hộp bounding hơi trước khi gửi nó cho map.fitBounds()
.
Dưới đây là một chức năng để thu nhỏ một hộp bounding:
// 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}
]
}
Sử dụng nó như thế này:
// 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)
);
Tôi có một ứng dụng làm điều tương tự như codr: Tiết kiệm các giới hạn bản đồ hiện tại trong URL và khởi tạo bản đồ từ URL bị giới hạn khi làm mới. Giải pháp này hoạt động tuyệt vời cho điều đó.
Tại sao tính năng này hoạt động?
Google Maps về cơ bản thực hiện điều này khi fitBounds()
được gọi là:
- Trung tâm bản đồ trên điểm giữa của khung giới hạn nhất định.
- Phóng to đến mức thu phóng cao nhất nơi chế độ xem sẽ là chứa các giới hạn đã cho bên trong của hộp chế độ xem.
Nếu giới hạn nhất định sẽ chính xác phù hợp với khung nhìn, Google Maps không coi đó là "chứa" các giới hạn, vì vậy nó phóng ra một mức độ nhiều hơn nữa.
Nguồn
2017-01-19 22:42:14
Tôi đã cho tôi nhiều hơn sau đó 16 giờ để hạ cánh tại đây. Ngay cả khi đây không phải là lỗi, thì có một số công việc xung quanh cho những người đang cố gắng làm điều này. –