Ara*_*adi 3 android location flutter fluttermap
我正在使用 flutter_map 将地图添加到我的项目中。我能够使用它并使用它的选项。但我想要一些在 flutter_map 中找不到的东西。
我想听位置变化并获取用户停止触摸屏幕时的最后位置。就像 GestureDetector 小部件中的 onTapUp 或 onLongPressUp 一样。
flutter_map 中有 onPositionChanged 选项,但每次位置改变时都会调用它,这是很多。一旦用户触摸屏幕,onPositionChanged 就会被调用,直到用户停止触摸屏幕。我可以从中获取最后的位置,但我想在位置发生变化时调用 API 以获取附近汽车的列表。每次调用 onPositionChanged 时都调用 API 并不好。
所以我希望能够在用户完成位置更改时(当他/她停止触摸屏幕时)调用 API。
这是我的 flutter_map 代码:
FlutterMap(
key: Key('map'),
mapController: main.mapController,
options: MapOptions(
center: LatLng(main.lat, main.long),
zoom: 14,
maxZoom: 18,
minZoom: 10,
onPositionChanged: (mapPosition, boolValue){
_lastposition = mapPosition.center;
}),
layers: [
TileLayerOptions(
errorImage: AssetImage('images/login_icon.png'),
urlTemplate:
"https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",
// subdomains: ['a', 'b', 'c'],
// subdomains: ['', '1', '2', '3', '4']
),
MarkerLayerOptions(
markers: main.markersStart +
main.markersDestination +
main.driverMarkers,
),
],
),
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢:)。
小智 6
我发现的最好的解决方案是添加一个侦听器MapEventStream(在此处检查事件:map_events.dart)
MapController mapController;
StreamSubscription subscription;
@override
void initState() {
mapController = MapController();
mapController.onReady.then((_) {
subscription = mapController.mapEventStream.listen((MapEvent mapEvent) {
if (mapEvent is MapEventMoveStart) {
print(DateTime.now().toString() + ' [MapEventMoveStart] START');
// do something
}
if (mapEvent is MapEventMoveEnd) {
print(DateTime.now().toString() + ' [MapEventMoveStart] END');
// do something
}
});
});
super.initState();
}
@override
void dispose() {
subscription.cancel();
super.dispose();
}
Run Code Online (Sandbox Code Playgroud)
非常感谢这篇文章对我的帮助
| 归档时间: |
|
| 查看次数: |
4439 次 |
| 最近记录: |