【发布时间】:2021-04-29 07:09:12
【问题描述】:
我正在尝试获取地图旋转(方位),但无法使用地图控制器找到它。
目前使用 google_maps_flutter:^1.1.1 和 flutter:1.22
【问题讨论】:
标签: flutter google-maps-flutter
我正在尝试获取地图旋转(方位),但无法使用地图控制器找到它。
目前使用 google_maps_flutter:^1.1.1 和 flutter:1.22
【问题讨论】:
标签: flutter google-maps-flutter
找到它:CameraPosition 有方位:
controller.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
bearing: location.heading.value,
target: LatLng(location.latitude ?? 51.4,
location.longitude ?? 4.4),
zoom: 18),
),
【讨论】:
location对象?是来自@Hrvoje Čukman 建议的地理定位器吗?
您可以通过使用此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:该函数在用户移动地图时重复执行,不应执行昂贵的操作。
【讨论】:
您可以在您的 GoogleMaps 库中的 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,
),
),
);
}
【讨论】: