如何在flutter中使用map_view查找用户的当前位置?

时间:2018-03-23 03:29:28

标签: google-maps-api-3 flutter

我想将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)]
      ); 

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);
}

在上面的代码中,我们得到用户缩放级别,因此每次移动都不会改变用户的当前缩放级别。