Google Maps API v3设置缩放级别以显示给定的半径?

时间:2011-03-02 03:02:22

标签: javascript google-maps

我创建了一个用户输入邮政编码和半径(英里)的地图,我希望地图以从邮政编码创建的点为中心,并且只显示(大致)该半径范围内的区域。我正在创建一个半径为圆形的圆圈,并尝试使地图适合该圆圈。现在它正确地居中,但显示的区域远远超过给定的半径。

me.center_map = function(latlng, r)
{
    // latlng is the point of the zipcode
    var circ = new google.maps.Circle();
    circ.setRadius(r * 1609.0);
    circ.setCenter(latlng);
    map.setCenter(latlng);
    map.fitBounds(circ.getBounds());

    // updates markers
    google.maps.event.trigger(map,'dragend');
};

编辑:画出我正在使用的圈子。理想情况下,地图将放大到半径范围内的区域。

enter image description here

3 个答案:

答案 0 :(得分:21)

对fitBounds()的调用将缩放到完全包含边界的最小缩放级别。如果您要放大1个缩放级别,则半径将不会完全包含在地图中。

答案 1 :(得分:4)

map.setZoom(map.getZoom() + 1);

这当然取决于特定半径的适合程度(如果它不总是相同的话)

要显示圆圈内的区域,需要构建一个矩形,使其在圆周上具有角点,并使地图的视口适合其边界。

E.g。绘制一个可见的圆和一个具有相同中心点的透明矩形应该按照op。

的描述工作

答案 2 :(得分:0)

自2017年6月起,方法fitBounds有第二个参数,表示填充的大小。对于那些想要删除它的人,你只需要传递0。

Map.map.fitBounds(bounds, 0);

新方法签名:

fitBounds(bounds:LatLngBounds|LatLngBoundsLiteral, padding?:number)