放大和缩小功能在Android上的Google地图中无效

时间:2011-11-08 09:25:54

标签: android google-maps zooming android-maps

当我设置触摸侦听器以获得触摸位置拉长时,当我从我的代码中移除触摸侦听器时,放大和缩小功能无法正常工作。那么如何在谷歌地图中实现放大和缩小工作并获得触摸位置拉长?

我的代码在

下面
   mapView = (MapView) findViewById(R.id.map);
    mapView.setBuiltInZoomControls(true);
     mapView.setOnTouchListener(new View.OnTouchListener() {
            @Override

            public boolean onTouch(View v, MotionEvent event) {
                Log.i("!!!!!","*****");

            //---when user lifts his finger---

                if (event.getAction() == MotionEvent.ACTION_UP) {

                     Projection p2 = mapView.getProjection();
                     GeoPoint geoPoint = p2.fromPixels((int) event.getX(), (int)event.getY());
                     int latitude = geoPoint.getLatitudeE6();
                     int longitude = geoPoint.getLongitudeE6();
                     String aString = Integer.toString(latitude);
                     String aString2 = Integer.toString(longitude);

                     Log.i("latitude,longitude",aString+",,"+aString2);
                     if((latitude < -34.538238) && (latitude > -34.672182))
                     {
                      if((longitude < -58.347702) && (longitude > -58.528976))
                      {
                         Log.i("lat,long",aString+",,"+aString2);
                      }
                      else 
                      {
                             Log.i("out of region",aString+",,"+aString2);

                      }}
                    Log.i("@@@@@!!!!!","*****");



                }
                return true;

            }


            });

2 个答案:

答案 0 :(得分:3)

setOnTouchListener setBuiltInZoomControls(true)无法使用时。 您可以按命令displayZoomControls(true)显示缩放按钮。您的地图不会缩放,也不会通过触摸或多点触控移动,但您可以通过单击缩放按钮来缩放地图。

另一种方法是,当您不需要处理触摸但需要缩放地图时,按mapView.setOnTouchListener(null)关闭监听器并按setBuiltInZoomControls(true)缩放地图。在您需要处理触摸的那一刻,您可以设置监听器mapView.setOnTouchListener(new OnTouchLister(...)),但触摸机会缩放会丢失。如果不需要触摸,请执行mapView.setOnTouchListener(null)并再次setBuiltInZoomControls(true)缩放地图。

答案 1 :(得分:0)

试试这个。应该能够获得您之前所做的缩放控件和GeoPoint内容。

public boolean onTouchEvent(MotionEvent event,MapView m) {
    boolean status = false;
    int start,stop = 0;
    long long_click_time = 1500;  //1.5 seconds 
    if(e.getAction() == MotionEvent.ACTION_DOWN){
       start = event.getEventTime();
    }

    if(e.getAction()==MotionEvent.ACTION_UP){
       stop = event.getEventTime();
    }

    if(stop-start>long_click_time){
       //do your work
       status = true;
    }

    return status;
}

返回false应该为您提供缩放控件。该方法应该在Overlay的子类中。在下面的代码中,“Touchy”类继承自Overlay。

List<Overlay> overlayList = this.map.getOverlays();
Touchy touchy = new Touchy(Maps.this);
overlayList.add(touchy);