2016-12-02 44 views
1

在Google Maps API中,它允许您在给定坐标列表的情况下设置地图的边界。棒极了。我的问题是它在侧面给人一点喘息的空间。我试图让我所看到的边界框几乎不包含边界。Google Maps API setBounds到精确坐标

例如,我想查看加利福尼亚州,因此我将边界设置为东北角和西南角。虽然不是只展示加利福尼亚州,但我得到了俄勒冈州和墨西哥的一半。

这里是目前我在做什么:

var geo_region = { 
    northeast: { 
     lat: 42.0095169 
     lng: -114.131211 
    } 
    southwest: { 
     lat: 32.528832 
     lng: -124.482003 
    } 
} 
var map_bounds = new google.maps.LatLngBounds(); 
map_bounds.extend(new google.maps.LatLng(geo_region.northeast.lat, geo_region.northeast.lng)); 
map_bounds.extend(new google.maps.LatLng(geo_region.southwest.lat, geo_region.southwest.lng)); 

var plot_map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
plot_map.fitBounds(map_bounds); 

编辑: 更明确的例子可能是怀俄明州,因为它是这样一个漂亮的矩形。如果我的地图尺寸与怀俄明的比例相同,我只希望它能向我展示怀俄明州。

编辑: 有人建议我手动抵消边界,所以我抓住了谷歌正在使用的偏移量的一些数据,但我无法弄清楚他们的公式是什么来决定这些偏移量,所以我很长的路要走从能够做到这一点。我甚至使用了Google的Geocoding API中的视口坐标,但那些也没有多大帮助。

这里是我的数据:https://docs.google.com/a/dovidev.com/spreadsheets/d/1HZLdDt5uiGwEtY0NbX0pfkmYVuUDndptm_-kzq0vh_w/edit?usp=sharing

+1

相关问题:[Google Maps V3 - 如何计算给定范围的缩放级别](http://stackoverflow.com/questions/6048975/google-maps-v3-how-to-calculate-the-zoom - 电平换一个给出的界) – geocodezip

回答

2

这不能做正是由于谷歌的方式缩放级别的工作。谷歌设定了该区域的边界,但尽可能地放大,而不会削减任何东西。由于缩放级别是增量式的,而且它们的增量非常大,这通常意味着最终会有很多额外的空间。

当我试图放大甚至从我认为过分庞大的一次时,我发现部分边界已被切断。

因此,我们看到Google已经获得尽可能严密的结果。