我认为这是最近的Google Maps API v2的局限性。他们最近增加了在地面上绘制圆的功能-但是,如果您要定位摄像头以使其显示整个圆,则无法这样做。
可以调用CameraUpdateFactory#newLatLngBounds(bounds,padding),其中“bounds”是LatLngBounds,而“padding”是以像素为单位的距离。问题在于,无法在LatLngBounds中创建LatLng和半径。
LatLngBounds的构造函数仅接受2个LatLng实例,并生成一个矩形,其中是NW和SE角。
最佳答案
就像提到的Risadinha一样,您可以使用android-maps-utils
轻松实现。只需添加:
compile 'com.google.maps.android:android-maps-utils:0.4.4'
对于您的gradle依赖项,请使用以下代码:
public LatLngBounds toBounds(LatLng center, double radiusInMeters) {
double distanceFromCenterToCorner = radiusInMeters * Math.sqrt(2.0);
LatLng southwestCorner =
SphericalUtil.computeOffset(center, distanceFromCenterToCorner, 225.0);
LatLng northeastCorner =
SphericalUtil.computeOffset(center, distanceFromCenterToCorner, 45.0);
return new LatLngBounds(southwestCorner, northeastCorner);
}
编辑:
我们的目标是计算两个点(
LatLngs
):southwestCorner
和
northeastCorner
从
SphericalUtil
的Javadoc中,您可以看到225
和45
是heading
值,而distanceFromCenterToCorner
是distance
。下图中的值的进一步说明: