如何implemennt OnZoomListener上的MapView [英] How to implemennt OnZoomListener on MapView

查看:354
本文介绍了如何implemennt OnZoomListener上的MapView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想有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();
  }
 }
 

本博客对我帮助很大:<一href="http://pa.rezendi.com/2010/03/responding-to-zooms-and-pans-in.html">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.

这篇关于如何implemennt OnZoomListener上的MapView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆