В настоящее время я работаю над приложением, которое показывает местоположение автобуса студентам!
Проблема в том, что я убираю маркер с marker.remove();
или map.clear();
с карты, извлекаю новое местоположение и показываю его накарта, старая все еще отображается.
Вот мой код:
@Override
public void onMapReady(final GoogleMap googleMap) {
map = googleMap;
map.getUiSettings().setMyLocationButtonEnabled(false);
map.setMyLocationEnabled(false);
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Webi.with(getContext())
.from("http://31.25.91.60:8888/GetResult.php")
.onResponse(new OnResponse() {
@Override
public void Response(String content, String s1) {
try {
JSONArray arr = new JSONArray(content);
if(arr.length() > 0) {
for (int i = 0; i < arr.length(); i++) {
JSONObject jobj = arr.getJSONObject(i);
name.add(jobj.getString("driverid"));
lat.add(jobj.getString("lat"));
latlong.add(jobj.getString("longlat"));
time.add(jobj.getString("time"));
}
for(int index = 0; index < name.size(); index++) {
final int finalIndex = index;
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
try {
LatLng point = new LatLng(Double.parseDouble(lat.get(finalIndex)),Double.parseDouble(latlong.get(finalIndex)));
MarkerOptions markerOptions = new MarkerOptions()
.position(point)
.title(name.get(finalIndex))
.icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_pin));
marker = map.addMarker(markerOptions);
markers.add(marker);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
} else {
Toast.makeText(getActivity(), "چیزی پیدا نشد !", Toast.LENGTH_SHORT).show();
map.clear();
}
} catch (Exception e) {
map.clear();
e.printStackTrace();
}
}
}).connect();
}
}, 0, 10000);
LatLng university = new LatLng(36.2497511,58.8287331);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(university)
.zoom(17)
.bearing(90)
.tilt(40)
.build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
try {
for(int index = 0; index < markers.size(); index++) {
marker = markers.get(index);
marker.remove();
map.clear();
}
} catch (Exception e) {
e.printStackTrace();
}
handler.postDelayed(this, 9000);
}
};
Каждую 10-секундную дату выбирают с сервера и каждые 9-секундные маркеры должны быть удалены