我创建了一个用户输入邮政编码和半径(英里)的地图,我希望地图以从邮政编码创建的点为中心,并且只显示(大致)该半径范围内的区域。我正在创建一个半径为圆形的圆圈,并尝试使地图适合该圆圈。现在它正确地居中,但显示的区域远远超过给定的半径。
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');
};
编辑:画出我正在使用的圈子。理想情况下,地图将放大到半径范围内的区域。
答案 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)