Google Maps API V3:getBounds()转换fitBounds()的结果

时间:2013-10-26 20:29:03

标签: javascript google-maps google-maps-api-3 zoom

不,上面的答案不会回答我的问题。请仔细阅读我的更新,看看澄清为什么这是一个不同的案例!!!

我正在使用Google地图API V3。当我写这段代码时:

map.fitBounds(map.getBounds());

地图缩小!

我理解这是根据文档,因为fitBounds确保在地图上显示给定的边界,以便所有边缘显示在里面地图中。因此,我正在寻找的答案如下:

如何在不使用缩放效果的情况下修改getBounds的结果以用于fitBounds?

基本上,我很确定这可以计算,因为这是地图的作用,但在相反的方向,添加边距时,完全显示给定的边界。在这些术语中,请告诉我如何计算边距(以及如何计算fitBounds的{​​{1}}输出的正确输入,并且您的答案将被接受。

提前致谢!

更新

缩放和中心检索和设置对我不起作用!这就是为什么:

我将在数据库中保存地图的视口信息。稍后,我想重新创建地图并再次显示完全相同的位置。但是,映射平台可能因用户而异。因此,缩放和居中在不同的映射平台/框架之间不是标准的,并且不能在具有相同结果的所有映射平台/框架中使用。因此,唯一的标准方法是保存数据库中的边界。所以这个问题需要完全按照它要求的方向给出答案。

2 个答案:

答案 0 :(得分:1)

存储而不是限制地图的缩放和中心,并稍后恢复这些值。

答案 1 :(得分:0)

我遇到了完全相同的问题,并决定将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));