【发布时间】:2015-08-14 00:32:34
【问题描述】:
我对标记有疑问。看起来在我创建下一个标记之后,标记的 onDoubleTap 方法不再可用于 PREVIOUS 标记(不是创建的最后一个标记)。关于如何修复它的任何建议,我希望能够通过 onDoubleTap 方法通过双击随机删除每个标记?是什么导致 PREVIOUS 标记不会丢失 onDoubleTap 方法?我注意到我可以双击地图中的任何位置,最后一个标记消失。我只想在该标记的顶部双击它只会消失。另外,当我的地图旋转时,标记会消失。
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);
【问题讨论】:
-
你在哪里为你的标记添加事件?
-
@KyleEmmanuel 我没有向标记添加任何事件......这可能是问题所在。这两个 onSingleTapConfirmed 和 onDoubleTap 是地图视图事件而不是标记事件。如何向标记添加事件?
-
你可以参考这个帖子:stackoverflow.com/questions/6882441/…
标签: android overlay android-mapview marker osmdroid