2016-04-03 19 views
2

googleMapでマーカー位置を5秒間隔で更新したいとします。私はマーカーでgoogleMapに表示する必要があるサーバーから異なる緯度と経度の値を取得しています。私はきれいに5回のseconds.It更新の定期的な間隔でupdateCabLocationメソッドを呼び出しますがANRメッセージを示しています、定期的にgoogleMapマーカーを更新するにはどうすればよいですか?

void updateCabLocation(final LatLng location) { 

    if(myMarker == null) { 
     myMarker = mGoogleMap.addMarker(new MarkerOptions().position(location). 
       icon(BitmapDescriptorFactory.fromResource(R.drawable.myMarkerImage))); 
    }else { 
     myMarker.setPosition(location); 
    } 
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(location, 15); 
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(location)); 
    mGoogleMap.animateCamera(cameraUpdate); 

} 

Runnable updateMarker = new Runnable() { 
     @Override 
     public void run() { 
        updateCabLocation(location); // location value changes each time. I have deleted that piece of code here. 
        handler.postDelayed(updateMarker, 5000); 
     } 
    }; 

を以下を試してみました。それを達成する他の方法はありますか?

+1

ちょっとメモ:なぜ2つのカメラのアップデートがありますか?あなたはそれらの1つだけが必要です。 @MD位置を更新するときにマーカーを削除する理由はありません。 –

+0

@SamKuhmonenはい、あなたは正しいです。 –

+0

どこで 'updateCabLocation'を呼び出していますか?あなたは 'AsyncTask'を使用していますか?あなたはそのコードを投稿できますか? – antonio

答えて

1

あなたがマップを毎回クリアしてから、新しいマーカーを毎回描く

  1. IT-行うには、2つの方法があります。
  2. ロケーションの更新で新しい場所を取得するたびに、同じマーカーを別の場所にアニメートします。
+1

私のコードを見ると、毎回「マーカー」を作成していません。それがヌルなら、私はそれを作成しています。 –

+0

thats良いトリック。ちょうど場所を更新する。動きに鮮明で素敵な動きが必要な場合は、マーカーをアニメートする必要があります。 –

関連する問題