android – 添加触摸事件监听器到MapView

前端之家收集整理的这篇文章主要介绍了android – 添加触摸事件监听器到MapView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我想返回我在地图上触摸的任何点的地理位置,但是我的代码在移动/点击屏幕上没有任何作用.我是 JavaAndroid的新手,所以我认为它与我在java中缺乏编码知识有关.这是我的代码
package sdpd.loc;

import sdpd.loc.createNote.mapOverlay;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.Toast;
import android.app.Activity;

public class createNote extends MapActivity {

@Override
protected boolean isRouteDisplayed() {
    return false;
}       

@Override
public void onCreate(Bundle savedInstanceStates){       
    super.onCreate(savedInstanceStates);
    setContentView(R.layout.map);

    MapView mapview=(MapView)findViewById(R.id.MapView);
    mapview.setBuiltInZoomControls(true);


}   


class mapOverlay extends com.google.android.maps.Overlay{
    @Override

    public boolean onTouchEvent(MotionEvent event,MapView mapview){

        if (event.getAction()==1){
            GeoPoint p=mapview.getProjection().fromPixels((int)event.getX(),(int)event.getY());
            Toast.makeText(getBaseContext(),p.getLatitudeE6()/1E6 + "," + p.getLongitudeE6()/1E6,Toast.LENGTH_SHORT).show();

        }
        return false;
    }
}

}

如何让它上班?

解决方法

您没有注册您的自定义Overlay类mapOverlay(btw.类名始终使用Java中的大写字母)映射到MapView.通过创建类的实例并将其添加到MapView的叠加集合来执行此操作.

您可以通过将以下代码附加到活动的onResume()方法来实现.

public void onCreate(Bundle savedInstanceStates){       
    super.onCreate(savedInstanceStates);
    setContentView(R.layout.map);

    MapView mapview=(MapView)findViewById(R.id.MapView);
    mapview.setBuiltInZoomControls(true);

    mapOverlay myOverlay = new mapOverlay();
    List<Overlay> overlays = mMapView.getOverlays();        
    overlays.add(myOverlay);
}

现在您的叠加层已注册,触摸事件应处理.

猜你在找的Android相关文章