如何在 google 地图上进行地图旋转?

How do I get map rotation on google maps flutter?

我正在尝试获取地图旋转(方位角),但无法使用地图控制器找到它。

当前使用 google_maps_flutter:^1.1.1 和 flutter:1.22

发现:CameraPosition 有方位角:

 controller.animateCamera(
            CameraUpdate.newCameraPosition(
              CameraPosition(
                  bearing: location.heading.value,
                  target: LatLng(location.latitude ?? 51.4,
                      location.longitude ?? 4.4),
                  zoom: 18),
            ),

您可以使用这个 geolocator 插件来做到这一点,然后您可以通过以下方式获得您的位置:

Position position = await Geolocator.getCurrentPosition();

然后更新地图:

controller.animateCamera(
    CameraUpdate.newCameraPosition(
      CameraPosition(
        target: LatLng(position.latitude, position.longitude),
        zoom: 16,
        bearing: position.heading,
      ),
    ),
  ),

实际上我找到了我要找的东西。 GoogleMap 构造函数上有 onCameMove 回调,它接收当前 CameraPosition 作为参数。它具有方位、目标、倾斜和缩放字段。

这样我就可以随时了解地图方位的变化。

PS:该函数在用户移动地图时重复执行,不应执行昂贵的操作。

您可以在 Google 地图库的 CameraPosition 函数的属性中找到它。

_googleMapController!.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
        target: LatLng(cLoc.latitude!, cLoc.longitude!),
        bearing: cLoc.heading!,
        tilt: 30,
        zoom: 18,
      )))

您也可以从 location.onLocationChanged.listen((LocationData cLoc) {}

调用它

就是这样。

您可以通过以下步骤获取实时更新的方位:

使用以下方式监听位置变化:

double mainBearing = 15.0;
location.onLocationChanged.listen((locationLib.LocationData cLoc) {
  //You can get the bearing of current location by using
  mainBearing =  cLoc.heading

  //Or you can do newCameraPoistion here with new bearing
   _controller.animateCamera(
      CameraUpdate.newCameraPosition(
        CameraPosition(
          target: LatLng(cLoc.latitude, cLoc.longitude),
          zoom: zoomCamera,
          bearing: cLoc.heading,
        ),
      ),
    );
}