我正在使用颤振制作车辆跟踪管理应用程序。我被卡住的部分只是在车辆位置发生变化时更新地图上的标记位置。为了获取我们依赖硬件的位置,数据将存储在 firestore 数据库中,并且使用流构建器,我能够从 Firestone 获取位置到应用程序。
在查看插件代码时,我发现了一个_updateMarkers()
函数,但我不知道如何在应用程序中实现这个。
我正在使用颤振制作车辆跟踪管理应用程序。我被卡住的部分只是在车辆位置发生变化时更新地图上的标记位置。为了获取我们依赖硬件的位置,数据将存储在 firestore 数据库中,并且使用流构建器,我能够从 Firestone 获取位置到应用程序。
在查看插件代码时,我发现了一个_updateMarkers()
函数,但我不知道如何在应用程序中实现这个。
添加到 Adithya 的答案。
import 'package:google_maps_flutter_platform_interface/src/types/marker_updates.dart';
var updates = MarkerUpdates.from(
Set<Marker>.from(markers), Set<Marker>.from(updatedMarkers));
GoogleMapsFlutterPlatform.instance.updateMarkers(updates, mapId: mapId);
将 updateMarkers() 放入 setState() 是不必要的。
我在查看文档和插件代码后找到了方法,如下所示
使用类更新标记的位置MarkerUpdates
。Google-Maps-Plugin 的文档中提到了相同的类。此类将两个 Set<Marker>
作为输入,一个是当前标记集,另一个是新更新的标记集。这个类的文档在这里:https ://pub.dev/documentation/google_maps_flutter_platform_interface/latest/google_maps_flutter_platform_interface/MarkerUpdates-class.html
要使用此类,您必须添加以下导入语句:
import 'package:google_maps_flutter_platform_interface/src/types/marker_updates.dart';
在执行此方法时,我的 google-maps 插件版本是 google_maps_flutter: ^0.5.29+1
List<Markers> markers; //This the list of markers is the old set of markers that were used in the onMapCreated function
void upDateMarkers() {
List<Markers> updatedMarkers =[]; //new markers with updated position go here
updatedMarkers =['updated the markers location here and also other properties you need.'];
/// Then call the SetState function.
/// I called the MarkersUpdate class inside the setState function.
/// You can do it your way but remember to call the setState function so that the updated markers reflect on your Flutter app.
/// Ps: I did not try the second way where the MarkerUpdate is called outside the setState buttechnically it should work.
setState(() {
MarkerUpdates.from(
Set<Marker>.from(markers), Set<Marker>.from(updatedMarkers));
markers = [];
markers = updatedMarkers;
//swap of markers so that on next marker update the previous marker would be the one which you updated now.
// And even on the next app startup, it takes the updated markers to show on the map.
});
}
然后像我的情况一样定期调用该函数,或者按照您希望标记更新的方式调用该函数。
在这样做时发出警告,因为我被提升为警告:
Don't import implementation files from another package.dartimplementation_imports
我不知道这是否是一种安全的方法,但它正在完成这项工作。如果有人能告诉我们更多关于警告的信息,如果它有可能产生错误,那就太好了。
笔记:
有一个类似的类来更新圆、多边形和选项(地图选项),文档已经解释了所有这些,并且这些类的导入在与Updatemarkers
该类提到的相同路径中相似。