Java x秒后更新标记

Java x秒后更新标记,java,android,google-maps,google-maps-markers,Java,Android,Google Maps,Google Maps Markers,我正在开发一个android应用程序,其中一个活动上有一个谷歌地图。地图包含一个标记,标记的坐标将每10秒更新一次。坐标将从服务器获取。 问题:如何更新标记在地图上的位置 下面是my mapsActivity.java的外观: public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private GoogleMap mMap; private String lat = "-25.4

我正在开发一个android应用程序,其中一个活动上有一个谷歌地图。地图包含一个标记,标记的坐标将每10秒更新一次。坐标将从服务器获取。 问题:如何更新标记在地图上的位置

下面是my 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);
}
我有两个函数,通过向服务器发送SSH命令来更新全局变量lat和lon:

new getXCoordinates().execute();
new getYCoordinates().execute();
我尝试调用一个函数来更新OnCreate函数中的坐标和标记,但这不起作用。
我不知道如何在10秒后重复调用函数来更新标记

您可以使用以下内容:

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

这里的关键是保留已创建标记的一个实例,以便您可以随意更改其位置。

您可以使用以下方法:

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

这里的关键是保留所创建标记的一个实例,以便您可以随意更改其位置。

当h.postdelay(这个,delay)时,我有java.lang.NullPointerException错误;在您的活动中在哪里调用它?我在onCreate函数中调用它,在结束时。这就是我做错的吗?是的,你应该在onmapready方法中调用它。您需要等待映射准备就绪。当h.postdelay(这是延迟)时,我有java.lang.NullPointerException错误;在您的活动中在哪里调用它?我在onCreate函数中调用它,在结束时。这就是我做错的吗?是的,你应该在onmapready方法中调用它。您需要等待映射准备就绪。当handler.postDelayed出现java.lang.NullPointerException错误时(这是10000);当handler.postDelayed时,Im有java.lang.NullPointerException错误(这是10000);被执行。