2016-03-11 2 views
0

Я разрабатываю приложение для Android, и у меня есть карта google по одному из видов деятельности. Карта содержит маркер, и координаты маркера будут обновляться каждые 10 секунд. Координаты будут получены с сервера. Вопрос: Как обновить позицию маркера на карте?Обновление маркеров через x секунд

Вот что мой mapsActivity.java выглядит следующим образом:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 

private String lat = "-25.4316562"; 
private String lon = "50.6602371"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

} 

public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    LatLng sydney = new LatLng(-100, 35); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker on the drone")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
    CameraUpdate zoom=CameraUpdateFactory.zoomTo(17); 
    mMap.animateCamera(zoom); 
} 

У меня есть 2 функции, которые будут обновлять глобальные переменные и широта долгота, посылая команды SSH на сервер:

new getXCoordinates().execute(); 
new getYCoordinates().execute(); 

I попытался вызвать функцию для обновления координат и маркера в функции OnCreate, но это не работает. Я не могу узнать, как вызвать функцию повторно через 10 секунд, чтобы обновить маркер.

+0

Im с java.lang.NullPointerException error, когда handler.postDelayed (это 10000); выполняется. –

ответ

0

Вы можете использовать что-то вроде этого:

Handler h = new Handler(); 
int delay = 10 * 1000; 

h.postDelayed(new Runnable(){ 
    public void run(){ 

     // This portion of code runs each 10s. 

     h.postDelayed(this, delay); 
    } 
}, delay); 

добавить маркер, вы должны использовать

yourMarker = googleMap.addMarker(new MarkerOptions().position(latlng)) 

и обновлять использование

yourMarker.setPosition(latlng); 

Ключевым моментом здесь является сохранение экземпляр созданного маркера, чтобы вы могли по своему усмотрению изменить свое положение.

+0

Im с java.lang.NullPointerException error, когда h.postDelayed (это, задержка); выполняется. –

+0

Как вы это называете в своей деятельности? –

+0

Я вызываю его в функции onCreate, на полном конце. Это то, что я делаю неправильно? –

Смежные вопросы