我有一个googlemap应用程序,显示两个项目(itemizedoverlay类),我有一个更新按钮。当我按下更新按钮时,我想从地图中删除这些项目,然后再次添加相同的项目,但是使用新的纬度和经度值(我有一个服务,可以实现我在sharedPreferences中的纬度和经度字段,以及我也用捆绑的方式重新考虑另一个职位。
我做错了什么?当我尝试我的代码时,地图的项目不会被删除....只是新项目出现...但我想删除旧的
updateButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mapOverlays.clear();
updateMyPosition();
updateFriendPosition();
}
});
这些是我的两个功能:
private void updateFriendPosition()
{
Bundle bundle = this.getIntent().getExtras();//get the intent & bundle passed by X
userText.setText(bundle.getString("user"));
permissionText.setText(bundle.getString("permission"));
lastUpdateText.setText(bundle.getString("lastupdate"));
String coordinates[] = {bundle.getString("lat"), bundle.getString("lon")};
lat = Double.parseDouble(coordinates[0]);
lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
OverlayItem overlayitem1 = new OverlayItem(p, bundle.getString("user"), "Hi Friend!");
itemizedoverlay.addOverlay(overlayitem1);
mapOverlays.add(itemizedoverlay);// dibujo la estrella con la posicion actual del friend
mc.animateTo(p); ///nos centra el mapa en la posicion donde esta nuestro amigo
mc.setZoom(10); /// ajusta el zoom a 10
}
private void updateMyPosition()
{
String coordinates[] = {settings.getString("mylatitude", null),settings.getString("mylongitude", null)};
lat = Double.parseDouble(coordinates[0]);
lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
OverlayItem overlayitem1 = new OverlayItem(p, "Me", "My Position");
itemizedoverlay2.addOverlay(overlayitem1);
mapOverlays.add(itemizedoverlay2);//dibujo mi icono para mostrarme a mi
}
我也尝试使用mapview上的invalidate(),但它不起作用......仍然画旧项......
答案 0 :(得分:1)
看起来这是基于SDK教程。你已经为itemizedoverlay和另一个添加了两件事。您需要在HelloItemizedOverlay中添加一个方法,即'clear'
public void clear() {
mOverlays.clear();
}
在致电
之前调用此方法itemizedoverlay.addOverlay(overlayitem1);