如何implemennt OnZoomListener上的MapViewimplemennt、OnZoomListener、MapView

2023-09-13 00:10:46 作者:有一种格调叫我行我素

我想有onZoomListener我的图形页面。 下面的code为我做了什么。它注册,如果变焦按钮被窃听。因为所有的新手机现在支持捏放大,这是没用的。是否有人有想法怎么办实onZoomListener?谢谢你。

  OnZoomListener监听器=新OnZoomListener(){
   @覆盖
   公共无效onVisibilityChanged(布尔为arg0){
    // TODO自动生成方法存根

   }
   @覆盖
   公共无效onZoom(布尔为arg0){
    Log.d(TAG,ZOOM更改);
    // TODO自动生成方法存根

   }
  };

  ZoomButtonsController zoomButton = mapView.getZoomButtonsController();
  zoomButton.setOnZoomListener(听众);
 

解决方案

我不得不继承图形窗口和覆盖dispatchDraw

下面是code:

  INT oldZoomLevel = -1;
 @覆盖
 公共无效dispatchDraw(帆布油画){
  super.dispatchDraw(画布);
  如果(getZoomLevel()!= oldZoomLevel){
   Log.d(TAG,ZOOOMED);
   oldZoomLevel = getZoomLevel();
  }
 }
 
家里20多架私人飞机 604辆劳斯莱斯,这个亚洲王子帅炸了

本博客对我帮助很大:http://pa.rezendi.com/2010/03/responding-to-zooms-and-pans-in.html

以上的伟大工程。有没有可能简单的解决方案? 我试图直接实现onTouchListener在图形页面,但触摸事件将被检测一次,如果onTouchListener将返回false。如果将返回true,触摸会每次都检测到,但地图缩放和平移是行不通的。

I would like to have onZoomListener on my MapView. The code below is what I have done. It registers if zoom buttons are tapped. Since all new phones now supports pinch to zoom, this is useless. Does anybody have idea how to do real onZoomListener? Thanks.

   OnZoomListener listener = new OnZoomListener() {
   @Override
   public void onVisibilityChanged(boolean arg0) {
    // TODO Auto-generated method stub

   }
   @Override
   public void onZoom(boolean arg0) {
    Log.d(TAG, "ZOOM CHANGED");
    // TODO Auto-generated method stub

   }
  };

  ZoomButtonsController zoomButton = mapView.getZoomButtonsController();
  zoomButton.setOnZoomListener(listener);

解决方案

I had to subclass MapView and override dispatchDraw

Here is the code:

 int oldZoomLevel=-1;
 @Override
 public void dispatchDraw(Canvas canvas) {
  super.dispatchDraw(canvas);
  if (getZoomLevel() != oldZoomLevel) {
   Log.d(TAG, "ZOOOMED");
   oldZoomLevel = getZoomLevel();
  }
 }

This blog helped me a lot: http://pa.rezendi.com/2010/03/responding-to-zooms-and-pans-in.html

Above works great. Is there maybe simpler solution? I tried to implement onTouchListener on MapView directly but touch event would be detected only once if onTouchListener would return false. If it would return true, touch would be detected every time, but map zooming and panning wouldn't work.