设置谷歌地图动态缩放

时间:2016-05-13 10:12:57

标签: javascript google-maps zoom polygon bounds

可以根据多边形形状的高度(管理边界)定义缩放级别吗? 这个多边形将完全显示在地图的div中。

1 个答案:

答案 0 :(得分:1)

有一个map.fitBounds(my_bounds)函数,它将视口设置为包含给定的边界。它会将地图设置为可能的最高缩放级别,您可以在其中查看整个边界。

为此,您需要确定多边形的边界。如果您使用google.maps.Polygon来显示多边形,请查看this solution

在这种情况下,您将拥有:

google.maps.Polygon.prototype.getBounds = function() {
    var bounds = new google.maps.LatLngBounds();
    var paths = this.getPaths();
    var path;        
    for (var i = 0; i < paths.getLength(); i++) {
        path = paths.getAt(i);
        for (var ii = 0; ii < path.getLength(); ii++) {
            bounds.extend(path.getAt(ii));
        }
    }
    return bounds;
}

...
map.fitBounds(my_polygon.getBounds());

如果您使用Data layer来显示多边形,请查看this SO answer。它提供了如何计算Data.Feature边界的示例,如果它是一个多边形。

如果您有其他方法来确定多边形的边界,那么只需使用:

map.fitBounds(new google.maps.LatLngBounds(new google.maps.LatLng(SouthWestCornerLat, SouthWestCornerLng), new google.maps.LatLng(NorthEastCornerLat, NorthEastCornerLng));