我有一个asynctask获取服务器的位置并制作一个标记,asynctask在OnCreate()运行一次并且工作正常但我需要每分钟运行它,我读到我需要使用计时器但我不明白如何实现它,继承asynctask:
public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
final String TAG = "AsyncTaskParseJson.java";
// set json string url
String yourJsonStringUrl = url;
JSONArray dataJsonArr = null;
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... arg0) {
try {
// instantiate json parser
LatLngActivity jParser = new LatLngActivity();
// get json string from url
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
// get the array of users
dataJsonArr = json.getJSONArray(ID_CAMION);
for (int i = 0; i < dataJsonArr.length(); i++) {
JSONObject c …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我需要有两种类型的标记:第一种需要留在一个位置,第二种需要移动,现在我还没有静态标记但我的应用程序可以显示标记移动,如果位置电话改变了,但是我打电话给mMap.clear(),我不想在位置改变时清除所有标记,所以我只需要删除那个标记,我在另一个问题中读到我需要使用Marker.remove(); 删除单个标记,但我不知道在代码中的实现位置.
以下是新位置的方法:
public void onLocationChanged(Location location) {
mMap.clear();
GetLatLong();
handleNewLocation(location);
mCurrentLocation = location;
}
Run Code Online (Sandbox Code Playgroud)
这是handleNewLocation方法:
private void handleNewLocation(Location location) {
if (mLastLocation != null) {
LatLng latLng = new LatLng(list.get(0), list.get(1));
//mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
//añadir un nuevo marker con la posición de la variable latLng
MarkerOptions camion = new MarkerOptions()
.position(latLng)
.title("Camión")
.snippet("ruta " + ruta)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.bus));
Marker marker = mMap.addMarker(camion);
if (marker == null) {
mMap.addMarker(camion);
} else {
camion.position(latLng);
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:
List<Marker> markers = new ArrayList<Marker>(); …Run Code Online (Sandbox Code Playgroud)