1

こんにちは、マーカーの更新が必要です。

ArrayList<LatLng> markerList = new ArrayList<LatLng>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_soc_map);

    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

    markerList.add(new LatLng(48.8742, 2.3470));
    markerList.add(new LatLng(0, 0));

Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask(){

    GetDataFromWeb GDFW = new GetDataFromWeb();

       public void run() {


         for (LatLng latLon : markerList) {
         mMap.addMarker(new MarkerOptions().position(latLon).title("Another marker"));
            }
           //GDFW.execute();                       
       }

    }, 12000, 12000);

} 

だから..私はデータベースの緯度と経度から取得しますが、私はただテストします

markerList.add(new LatLng(48.8742, 2.3470));
markerList.add(new LatLng(0, 0));

だから.. 12 秒後に Lat と Lag を取得し、マップ マーカーを更新する必要があります

私はどこにも答えが見つからなかったので、あなたが私を助けることができるかもしれません:)

4

1 に答える 1

0

ねえ、私はちょうど同じ問題を抱えて解決しました。

public class Livebus extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.googlemaps);

        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        mTask = (GetDataFromWeb) new GetDataFromWeb().execute(); //This is an AsyncTaskClass
    }


class GetDataFromWeb extends AsyncTask<String, String, String> {

       protected String doInBackground(String... param) {

           while(true)
           {
               //HERE You should collect your data from the Web
               latitude=...
               longitude=...

               //You have to update the markers in the Main thread which is also called UI thread.
               //AsyncTask classes create theit own thread so you need to run the marker 
               //update on the UI thread. Which you can see below now.

               runOnUiThread(new Runnable() { 
                   public void run() {
                       mMap.addMarker(new MarkerOptions()
                       .position(new LatLng(latitude, longitude))
                       .title("Hello"));
                   }
               });
           }
     }
}

これが私の最初の回答です。お役に立てば幸いです:)何かうまくいかない場合は、私に連絡してください。

AsyncTask の詳細: http://developer.android.com/reference/android/os/AsyncTask.html スレッドの詳細: http://developer.android.com/guide/components/processes-and-threads.html

私も今日の教訓を学んだことを読んでください。

于 2013-08-04T17:02:57.767 に答える