我正在开发一个 Android 应用程序,并且我在其中一项 Activity 上有一个谷歌地图。 map 包含一个标记,标记的坐标将每 10 秒更新一次。坐标将从服务器获得。 问题:如何更新 map 上标记的位置?
这是我的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 命令来更新全局变量 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);
这里的关键是保留创建的标记的实例,以便您可以随意更改其位置。
关于java - x 秒后更新标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951197/