Javascript 谷歌地图API v3设置缩放级别以显示给定半径?

Javascript 谷歌地图API v3设置缩放级别以显示给定半径?,javascript,google-maps,Javascript,Google Maps,我创建了一个地图,其中用户输入一个zipcode和一个半径(英里),我希望地图以zipcode创建的点为中心,并且只显示(大致)该半径内的区域。我正在创建一个半径为的圆,并试图使地图适合该圆。现在它的中心位置正确,但显示的面积远大于给定的半径 me.center_map = function(latlng, r) { // latlng is the point of the zipcode var circ = new google.maps.Circle(); cir

我创建了一个地图,其中用户输入一个zipcode和一个半径(英里),我希望地图以zipcode创建的点为中心,并且只显示(大致)该半径内的区域。我正在创建一个半径为的圆,并试图使地图适合该圆。现在它的中心位置正确,但显示的面积远大于给定的半径

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');
};
编辑:绘制了我正在使用的圆。理想情况下,地图将放大到半径范围内的区域

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

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

这取决于特定半径的拟合程度(如果不总是相同的话)。要显示圆内的区域,需要构造一个矩形,该矩形的角位于圆的周长上,并使地图的视口适合其边界。例如,绘制一个中心点相同的可见圆和一个透明矩形应该按照op中的描述工作。

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

Map.map.fitBounds(bounds, 0);
新方法签名:

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

是的,你需要一些可以呈现部分缩放级别的东西,例如,你需要z=11.5syslogic,而不是z=11.5syslogic:我意识到这一点。我的意思是谷歌地图需要能够呈现浮点缩放级别。