Мне нужно построить карту и, кроме того, мне нужно отобразить некоторые точки местоположения.Эти местоположения извлекаются из хеш-таблицы в другом классе.Содержание этой хеш-таблицы всегда меняется.Поэтому я ожидаю, что эти точки местоположения на карте будут перемещены по мере изменения хеш-таблицы.Код показан ниже:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
MapView mapView = (MapView) this.findViewById(R.id.map);
mapView.setStreetView(true);
mc = mapView.getController();
mc.animateTo(...);
mc.setZoom(12);
mapView.invalidate();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
MarkerOverlay mark = new MarkerOverlay(p);
listOfOverlays.add(mark);
for(Entry<Long,Pair> p: LQTManager.getInstance().ResultTable.entrySet())
{
GeoPoint point = new GeoPoint(
(int) (p.getValue().x * 1E6),
(int) (p.getValue().y * 1E6));//some code is not shown
MarkerOverlay markerOverlay = new MarkerOverlay(point);
listOfOverlays.add(markerOverlay);
}
mapView.postInvalidate();
}
class MarkerOverlay extends com.google.android.maps.Overlay
{
public GeoPoint pt;
public MarkerOverlay(GeoPoint pt){
this.pt=pt;
}
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
Point screenPts = new Point();
mapView.getProjection().toPixels(pt, screenPts);
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.pushpin);
canvas.drawBitmap(bmp, screenPts.x-16, screenPts.y-32, null);
return true;
}
}
Есть ли способ обновить наложенные объекты, если я коснусь экрана.Я думаю о том, чтобы поместить некоторые функции в метод переопределения onTap MarkerOverlay.Но я думаю, это не логично, если я пытаюсь заставить Overlay попытаться очистить себя?Любая предложенная идея?