Android 如何更新谷歌地图';s标记';使用来自套接字的数据流的位置?
我的应用程序应该使用互联网上的数据流在地图上追踪飞机。我使用一个服务来接收数据,然后使用信使在它和我的MainActivity()之间发送消息,MainActivity()包含我的片段和一个SupportMapFragment(MainMapFragment)以及一个RecyclerView片段(AircraftListFragment) 每个标记位于HashMap中,MainMapFragment中有一个飞机对象,飞机对象由MainActivity维护。对于我的活动,是否有类似于notifyDatasetChanged()的内容来更新我的MapFragment?显然,我无法在MainMapFragment中编写这样的方法:Android 如何更新谷歌地图';s标记';使用来自套接字的数据流的位置?,android,google-maps,android-activity,android-service,google-maps-markers,Android,Google Maps,Android Activity,Android Service,Google Maps Markers,我的应用程序应该使用互联网上的数据流在地图上追踪飞机。我使用一个服务来接收数据,然后使用信使在它和我的MainActivity()之间发送消息,MainActivity()包含我的片段和一个SupportMapFragment(MainMapFragment)以及一个RecyclerView片段(AircraftListFragment) 每个标记位于HashMap中,MainMapFragment中有一个飞机对象,飞机对象由MainActivity维护。对于我的活动,是否有类似于notifyD
public void updateAircraftArrayList(ArrayList<Aircraft> updatedAircrafts){
this.aircraftArrayList = updatedAircrafts;
updateMarkers(); //Update the Markers on the map
}
我听说过EventBus,但据我所知,它不太适合处理来自套接字的恒定流。您可以从MainActivity调用updateAircraftArrayList方法:
class IncomingHandler extends android.os.Handler {
@Override
public void handleMessage(Message msg){
String aircraftMsg = msg.getData().getString("fromSocket");
Aircraft newAircraft = decodeSbsMessage(aircraftMsg);
aircraftArrayList = searchThroughArrayListForAircraft(newAircraft);
MainMapFragment.updateAircraftArrayList(aircraftArrayList);
}
}
your_instance_of_MainMapFragment.updateAircraftArrayList(aircraftArrayList)
我现在嘲笑自己错过了这个,这个问题在过去的几天里折磨着我的大脑。谢谢你的帮助!如果它解决了你的问题,你可以接受它作为一个答案。