基于圆半径的颤动调整/缩放谷歌地图缩放级别

gav*_*hat 5 flutter google-maps-flutter

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

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: ...)
              )
            },
          ),
        ),
Run Code Online (Sandbox Code Playgroud)

提前致谢。

gav*_*hat 10

经过一番搜索,在这里找到了一个解决方案,该解决方案是用 java 编写的 android 应用程序。

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;
  }
Run Code Online (Sandbox Code Playgroud)

  • 我认为应该在使用 `math.log()` 之后 `import 'dart:math' as math;`。它帮助我们避免错误:名称“log”在库“dart:developer”和“dart:math”中定义。 (2认同)