【发布时间】:2018-10-24 07:22:12
【问题描述】:
我目前正在开发一个向学生显示公交车位置的应用程序!
问题是当我从地图中删除带有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 秒标记必须被删除
【问题讨论】:
-
在
map.animateCamera之前尝试markers.clear();&map.clear() -
@Eminem 没有任何区别
-
在此行之前
marker = map.addMarker(markerOptions);致电map.clear(); -
@Eminem 您正在谈论的代码在 for 循环中,如果我有多个标记,那么它将只显示一个
-
这样有效吗?
标签: java android google-maps google-maps-markers