Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何更新谷歌地图';s标记';使用来自套接字的数据流的位置?_Android_Google Maps_Android Activity_Android Service_Google Maps Markers - Fatal编程技术网

Android 如何更新谷歌地图';s标记';使用来自套接字的数据流的位置?

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

我的应用程序应该使用互联网上的数据流在地图上追踪飞机。我使用一个服务来接收数据,然后使用信使在它和我的MainActivity()之间发送消息,MainActivity()包含我的片段和一个SupportMapFragment(MainMapFragment)以及一个RecyclerView片段(AircraftListFragment)

每个标记位于HashMap中,MainMapFragment中有一个飞机对象,飞机对象由MainActivity维护。对于我的活动,是否有类似于notifyDatasetChanged()的内容来更新我的MapFragment?显然,我无法在MainMapFragment中编写这样的方法:

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)

我现在嘲笑自己错过了这个,这个问题在过去的几天里折磨着我的大脑。谢谢你的帮助!如果它解决了你的问题,你可以接受它作为一个答案。