【发布时间】:2023-01-20 19:46:29
【问题描述】:
在我的应用程序中,我使用华为地图。我想要获取位置,但 locationService 返回 Location 以及所有可为空的属性。
我不知道我做错了什么。
获取位置的代码:
var permissionHandler = PermissionHandler();
var status = await permissionHandler.hasLocationPermission();
if (!status) {
return null;
}
var locationService = FusedLocationProviderClient();
var locationRequest = LocationRequest();
locationRequest.interval = 5000;
var locationSettingsRequest = LocationSettingsRequest(
requests: [LocationRequest()],
alwaysShow: true,
needBle: false,
);
var locationSettingState = await locationService.checkLocationSettings(locationSettingsRequest);
if (locationSettingState.locationPresent) {
await locationService.getLastLocation().then((_locationData) async {
print("Location: $_locationData");
}).catchError((onError) {
print(onError);
});
}
打印输出:
Location: Location(provider: null, latitude: null, longitude: null, altitude: null, speed: null, bearing: null, horizontalAccuracyMeters: null, verticalAccuracyMeters: null, speedAccuracyMetersPerSecond: null, bearingAccuracyDegrees: null, time: null, elapsedRealtimeNanos: null)
【问题讨论】:
-
您能否分享详细的日志信息和测试设备?华为地图不提供Location接口。可以集成huawei_location。
-
此外,您可能使用了错误的 API。
locationService.getLastLocation用于获取最后位置。您可以使用requestLocationUpdates 不断请求位置更新。 -
我解决了这个。我不使用
await locationService.requestLocationUpdates(locationRequest)<- 这个重新加载位置和返回坐标
标签: android flutter dart huawei-map-kit