我认为这是最近的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中,您可以看到22545heading值,而distanceFromCenterToCornerdistance。下图中的值的进一步说明:

    android - 如何在Android Google Maps API v2中将LatLng和半径转换为LatLngBounds?-LMLPHP

    10-06 03:29