Google Maps API setBounds为精确坐标

时间:2016-12-02 16:55:17

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

在Google Maps API中,它允许您在给定坐标列表的情况下设置地图的边界。太棒了。我的问题是它在侧面有一点喘息的空间。我试图找到边界框,我看着几乎没有界限。

例如,我想查看加利福尼亚,所以我将界限设置为东北角和西南角。不过只展示加利福尼亚州,我得到了整个俄勒冈州和墨西哥的一半。

这是我目前正在做的事情:

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);

编辑: 一个更清晰的例子可能是怀俄明,因为它是一个很好的矩形。如果我的地图尺寸与怀俄明州的比例相同,我只想让它向我展示怀俄明州。

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

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

1 个答案:

答案 0 :(得分:2)

由于谷歌的缩放级别的工作方式,这不能完全做到。谷歌设置了该区域的边界,但尽可能地放大,而不会削减任何东西。由于缩放级别是递增的,并且它们的增量非常大,这通常意味着您将获得大量额外空间。

当我试图从我认为非常大的尺寸中放大一倍时,我发现部分边界已被切断。

因此我们发现Google已经尽可能地让它变得紧张。