【问题标题】:Android MapView Multiple Random Markers Removal with Double Tap On MarkerAndroid MapView多个随机标记删除与双击标记
【发布时间】: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


【解决方案1】:

您的方法与预期结果相差甚远。您正在对 Overlay 进行子类化,这确实是一个“差”类。例如,您必须自己实现触摸检测。

我建议以下方法:

  • 添加OSMBonusPack 库。
  • 首先使用 Marker,然后将其子类化以实现对 onDoubleTap 事件的支持
  • 查看 Marker.onLongPress 源代码,实现您自己的 onDoubleTap 方法(使用 hitTest 方法检查是否在此标记上双击)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多