【发布时间】:2020-03-11 02:10:33
【问题描述】:
我一直在尝试使用Location package 通过onLocationChanged() 方法获取位置数据。而我也成功了。但问题是我需要减慢/延迟从包裹接收的位置数据。我增加了interval 期间,但是,它没有工作。
我需要放慢数据接收速度,这样应用才能流畅运行,否则会卡顿。
这是我遵循的代码sn-p,
Location location = new Location();
StreamSubscription _locationSubscription;
void initState() {
super.initState();
_animateToUser();
}
@override
void dispose() {
if (_locationSubscription != null) {
_locationSubscription.cancel();
}
super.dispose();
}
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
GoogleMap(
initialCameraPosition: CameraPosition(
target: LatLng(6.854399, 79.865463),
zoom: 14.44,
),
myLocationEnabled: true,
onMapCreated: _onMapCreated,
),
],
);
}
_onMapCreated(GoogleMapController controller) {
setState(() {
mapController = controller;
});
}
_animateToUser() async {
location.changeSettings(interval: 3000, distanceFilter: 10.0);
_locationSubscription = location.onLocationChanged().listen((newData) {
print(newData.latitude);
mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(newData.latitude, newData.longitude),
zoom: 17.0
)
)
);
});
}
我认为我定义changeSettings() 的方式可能是错误的。
location.changeSettings(interval: 3000, distanceFilter: 10.0);
我的方法是正确的还是有其他方法可以做到?
任何帮助将不胜感激。
更新
_locationSubscription = location.onLocationChanged().listen((newData) {
const oneSec = const Duration(seconds: 5);
new Timer.periodic(oneSec, (Timer t) {
print(newData.latitude);
mapController.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(newData.latitude, newData.longitude),
zoom: 17.0
)
)
);
updateToDb(newData);
});
});
【问题讨论】:
标签: android ios flutter dart location