簡體   English   中英

Google Maps API V3:getBounds()將結果轉換為fitBounds()

[英]Google Maps API V3: getBounds() convert result for fitBounds()

不,以上答案不會回答我的問題。 請閱讀下面的更新以了解為什么這是另一種情況!

我正在使用Google Maps API V3。 當我編寫這段代碼時:

map.fitBounds(map.getBounds());

地圖縮小!

我知道這是根據文檔進行的,因為fitBounds確保在地圖上顯示給定的邊界,以便所有邊緣都顯示地圖內。 因此,我要尋找的答案在於以下幾點:

之后如何修改getBounds結果以用於fitBounds而沒有縮放效果?

基本上,我很確定這是可以計算的,因為這就是地圖的功能,但是在添加邊距的相反方向上可以完全顯示給定的邊界。 用這些術語,告訴我如何計算邊距(以及如何為具有getBounds輸出的fitBounds計算正確的輸入),您的答案將被接受。

提前致謝!

更新:

縮放和居中檢索和設置對我不起作用! 原因如下:

我將在數據庫中保存地圖的視口信息。 稍后,我想重新創建地圖並再次顯示完全相同的位置。 但是,映射平台可能因用戶而異。 因此,縮放和居中在不同的制圖平台/框架之間不是標准的,並且不能在所有具有相同結果的平台/框架中使用。 因此,唯一的標准方法是將界限保存在數據庫中。 因此,問題需要完全按照其要求的方向給出答案。

存儲而不是限制地圖的縮放和中心,並稍后恢復這些值。

我遇到了完全相同的問題,並決定將getBounds()產生的邊界框縮小15%。 那對我來說做得很好:

var neLat = map.getBounds().getNorthEast().k;
var neLong = map.getBounds().getNorthEast().B;
var swLat = map.getBounds().getSouthWest().k;
var swLong = map.getBounds().getSouthWest().B;

var boundingBoxPerc = 0.15;
var mapWidth = neLong - swLong;
var mapHeight = neLat - swLat;

var ne = new google.maps.LatLng(neLat - mapHeight * boundingBoxPerc, neLong - mapWidth * boundingBoxPerc);
var sw = new google.maps.LatLng(swLat + mapHeight * boundingBoxPerc, swLong + mapWidth * boundingBoxPerc);
map.fitBounds(new google.maps.LatLngBounds(sw, ne));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM