1

私のアプリはインターネット上でストリーミングされたデータを使って地図上の飛行機を追跡することになっています。私はサービスを使用してデータを受信し、Messengerを使用してMainActivity(thanks to this guide)との間でメッセージを送信します。これには、私のFragment with SupportMapFragment(MainMapFragment)とRecyclerView Fragment(AircraftListFragment)があります。ソケットからストリーミングされたデータを使用してGoogleマップのマーカーの位置を更新するにはどうすればよいですか?

各マーカーは、MainMapFragmentの航空機オブジェクトを含むHashMapにあり、航空機オブジェクトはMainActivityによって維持されます。何かがありますか?私のMapFragmentを更新するための私の活動のためにnotifyDatasetChanged()?私はEventBusを聞いたが、私が聞いたから、それはありません

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); 
    } 
} 

:私のMainActivityで、このようにアクセス

public void updateAircraftArrayList(ArrayList<Aircraft> updatedAircrafts){ 
    this.aircraftArrayList = updatedAircrafts; 
    updateMarkers(); //Update the Markers on the map 
} 

:もちろん、私はこのようなMainMapFragmentのメソッドを記述することはできませんソケットからの一定のストリームを処理するのに非常に適しています。

答えて

1

あなたのMainActivityからメソッドを呼び出すことができupdateAircraftArrayList:私はこれを逃すために、今自分で笑ってる

your_instance_of_MainMapFragment.updateAircraftArrayList(aircraftArrayList) 
+0

、この問題は、最後の数日間、私の脳をラッキングしました。ご協力いただきありがとうございます! – CiaranC94

+0

あなたは大歓迎です。それは私にも起こった:) – ozo

+0

あなたの問題を解決した場合、あなたは答えとしてそれを受け入れるかもしれません。 – ozo

関連する問題