基于圆半径颤振调整/缩放Google地图缩放级别

问题描述

我想根据圆的半径缩放google map缩放级别。从技术上讲,我希望用户以最佳缩放级别在地图上看到圆圈。我试图获取边界并调整相机位置,但circle没有任何此类边界参数。

GoogleMap(
            onMapCreated: (GoogleMapController controller) {
               controller.showMarkerInfoWindow(MarkerId("0"));
            },circles: Set.from([
              Circle(
                circleId: CircleId("0"),center: LatLng(...),radius: 1000,)
            ]),initialCameraPosition: CameraPosition(
              target: LatLng(..),**zoom: 15,// I want to scale zoom based on radius of circle.**
            ),markers: {
              Marker(
                markerId: MarkerId("0"),position: LatLng(..),infoWindow: InfoWindow(title: ...)
              )
            },),

预先感谢。

解决方法

经过一番搜索,找到了here的解决方案,该解决方案位于用于Android应用程序的Java中。

dart / flutter代码如下:

double getZoomLevel(double radius) {
    double zoomLevel = 11;
    if (radius > 0) {
      double radiusElevated = radius + radius / 2;
      double scale = radiusElevated / 500;
      zoomLevel = 16 - log(scale) / log(2);
    }
    zoomLevel = num.parse(zoomLevel.toStringAsFixed(2));
    return zoomLevel;
  }