我想将initialCameraPosition设置为指向用户的当前位置,而不是硬编码经度和纬度。
showMap() {
mapView.show(
new MapOptions(
mapViewType: MapViewType.normal,
showUserLocation: true,
initialCameraPosition: new CameraPosition(
new Location(23.2599, 77.4126), 10.0),
title: "Parking Spaces"),
toolbarActions: [new ToolbarAction("Close", 1)]
);
答案 0 :(得分:2)
首先,您可以对要显示的默认位置进行硬编码:
MapView mapView = new MapView();
mapView.show(
new MapOptions(
title: 'map title',
showUserLocation: true,
initialCameraPosition: CameraPosition(new Location(35.7050274, 51.364935),11.92)
)
);
然后将一个函数绑定到地图视图,这样当gps找到用户位置时相机位置得到更新:
mapView.onLocationUpdated.lastWhere((position)=>this.onUserLocationUpdated(position,mapView));
如果您想要跟踪用户移动,则可以在用户位置更新时调用方法名称lastWhere
,而不是listen
。
之后,您只需要定义一个将摄像机位置更改为用户当前位置的功能:
onUserLocationUpdated(position,MapView mapview)async {
double zoomLevel = await mapview.zoomLevel;
mapview.setCameraPosition(position.latitude, position.longitude, zoomLevel);
}
在上面的代码中,我们得到用户缩放级别,因此每次移动都不会改变用户的当前缩放级别。