На самом деле я получаю значения latitude
и longitude
от ArrayList
, и я хочу показать это местоположение на карте с интервалом в 3 секунды.
Я создал метод с именем waitSec()
, и я вызываю его в displayLocation()
, но это не работает, потому что это заблокировало основной поток, поэтому я использовал handler
и asynctask
, и я обнаружил трудностив этом.
public void waitSec(){
long start = System.currentTimeMillis();
while(System.currentTimeMillis()<start+3000);
}
class MyAsyncTask extends AsyncTask<Integer,Integer,Void>{
@Override
protected Void doInBackground(Integer... integers) {
waitSec();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Log.e("TAG", "onPostExecute: we have waited 3 seconds" );
displayCurrentLocation();
}
}
private void displayCurrentLocation() {
for(int i=0;i<trackObjectList.size();i++){
//Log.e("TAG", "displayCurrentLocation: "+trackObjectList.get(i).getLatitude() );
if(trackObjectList.size()>0)
latLng = new LatLng(Double.parseDouble(trackObjectList.get(i).getLatitude())
,Double.parseDouble(trackObjectList.get(i).getLongitude()));
mMap.addMarker(new MarkerOptions().position(latLng)
.title("Here")
.icon(BitmapDescriptorFactory.fromBitmap(getSmallerSize(R.drawable.green_dot_th))));
mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,15f));
//waitSec();
}
}
Я ожидал, что через каждые 2-3 секунды маркеры будут добавляться на карту Google, но это не добавляет в этом интервале.Он показывает все последние отметки на карте Google.