startTimeLocation method

void startTimeLocation({
  1. String clientKey = "singleTimeLocation",
  2. int interval = 2000,
  3. double distance = -1,
  4. AMapLocationMode locationMode = AMapLocationMode.Hight_Accuracy,
  5. DesiredAccuracy desiredAccuracy = DesiredAccuracy.Best,
  6. required LocationCallback callback,
})

开始定位

Implementation

//优化 多线程回调 clientName 多个地方同时使用后台定位,这里可以同时返回多个回调通道
void startTimeLocation(
    {String clientKey = "singleTimeLocation",
    int interval = 2000,
    double distance = -1,
    AMapLocationMode locationMode = AMapLocationMode.Hight_Accuracy,
    DesiredAccuracy desiredAccuracy = DesiredAccuracy.Best,
    required LocationCallback callback}) {
  //注意:定位已经在启动,不摧毁不要反复执行
  if (!clientMap.containsKey(clientKey)) {
    GaodeLocation? location = GaodeLocation(backgroundService: false);
    //监听定位返回
    location.onLocationChanged().listen((Map<String, Object> result) {
      currentLocation = LocationInfo.fromJson(result);
      callback(currentLocation!);
    });
    clientMap[clientKey] = location;
  }
  LocationOption locationOption = LocationOption(
    onceLocation: false,
    locationInterval: interval,
    distanceFilter: distance,
    locationMode: locationMode,
    desiredAccuracy: desiredAccuracy,
    sensorEnable: true,
  );
  //适配ios14及以上 精准定位权限
  locationOption.fullAccuracyPurposeKey = fullAccuracyPurposeKey ?? "purposeKey";
  clientMap[clientKey]?.setLocationOption(locationOption);
  clientMap[clientKey]?.startLocation();
}