【问题标题】:Unwanted Tap on an Item in ItemizedOverlay during zooming via multi touch在通过多点触控缩放期间不需要点击 ItemizedOverlay 中的项目
【发布时间】:2011-07-07 12:07:05
【问题描述】:

当用户通过多点触控缩放地图时,它总是被点击我的 ItemizedOverlay 中的一个项目。

如果用户实际上是多点触控进行缩放,如何让我的 MapView 不调用叠加层的 onTap?

【问题讨论】:

    标签: android map touch


    【解决方案1】:

    您可以在 onTap 方法中获取当前地图视图的缩放级别,如果您发现它与上一个不同,您可以调用return

    【讨论】:

      【解决方案2】:

      我也遇到过这个问题。

      rohit mandiwal 的想法很好,但是如果用户,例如,放大然后缩小到相同的级别,仍然可能发生不需要的点击事件。

      对此的解决方案是检测onTouchEvent() 中的缩放级别变化,而不是onTap() 中的。我试过这个,它似乎工作。 这是我的代码:

      private class LocationOverlay extends ItemizedOverlay<OverlayItem> {
              private int lastZoomLevel;
              private boolean onTapAllowed;
      
              public LocationOverlay(...) {
                  //...
                  lastZoomLevel=mapView.getZoomLevel();    
              }
      
              @Override
              public boolean onTouchEvent(MotionEvent motionEvent, MapView mapView) {
                  if (mapView.getZoomLevel()!=lastZoomLevel) {
                      lastZoomLevel=mapView.getZoomLevel();
                      onTapAllowed=false;
                  }
                  return super.onTouchEvent(motionEvent, mapView);
              }
      
              @Override
              public boolean onTap(GeoPoint geoPoint, MapView mapView) {
                  if (!onTapAllowed) {
                      Log.d("onTap","onTap cancelled, zoom level changed...");
                      lastZoomLevel=mapView.getZoomLevel();
                      onTapAllowed=true;
                      return true;
                  }
                  //...
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 2020-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-27
        相关资源
        最近更新 更多