我对标记有疑问。看起来在我创建下一个标记之后,标记的onDoubleTap方法不再可用于PREVIOUS标记(不是最后创建的标记)。有关如何修复它的任何建议我希望能够通过onDoubleTap方法双击它来随机删除每个标记吗?什么导致PREVIOUS标记不会丢失onDoubleTap方法?我注意到我可以双击地图中的任何地方,LAST标记消失。我只想在双重敲击那个标记的ON TOP时才会消失。此外,当我的地图旋转时,标记消失。
Overlay touchOverlay = new Overlay(this) {
ItemizedIconOverlay<OverlayItem> anotherItemizedIconOverlay = null;
@Override
protected void draw(Canvas arg0, MapView arg1, boolean arg2) {
}
@Override
public boolean onSingleTapConfirmed(final MotionEvent e,
final MapView mapView) {
Projection proj = mapView.getProjection();
GeoPoint loc = (GeoPoint) proj.fromPixels((int) e.getX(),
(int) e.getY());
ArrayList<OverlayItem> overlayArray = new ArrayList<OverlayItem>();
OverlayItem mapItem = new OverlayItem("", "", new GeoPoint(
(((double) loc.getLatitudeE6()) / 1000000),
(((double) loc.getLongitudeE6()) / 1000000)));
mapItem.setMarker(OfflineMapDemoActivity.this.getResources()
.getDrawable(R.drawable.location_mark));
overlayArray.add(mapItem);
anotherItemizedIconOverlay = new ItemizedIconOverlay<OverlayItem>(
getApplicationContext(), overlayArray, null);
mapView.getOverlays().add(anotherItemizedIconOverlay);
mapView.invalidate();
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e, MapView mapView) {
//remove marker here
mapView.getOverlays().remove(anotherItemizedIconOverlay);
mapView.invalidate();
return true;
}
}; //end of Overlay
mapView.getOverlays().add(touchOverlay);
答案 0 :(得分:0)
您的方法远非预期的结果。你正在对Overlay进行分类,这实际上是一个很糟糕的&#34;类。例如,您将自己实施触摸检测。
我建议采用以下方法: