Android自定义MapView

时间:2011-01-12 11:29:04

标签: android android-mapview pan

我正在尝试创建MapView的扩展版本。

问题是当定义MapView的扩展版本时,mapview不会平移。

我正在我的自定义地图视图中实现onTouchListener

我也想知道有哪些方法可以平移mapview。

当MapView的库存版本与相同的源代码一起使用时,问题不会持续存在。

修改

MyMapView 来源:

public class MyMapView extends MapView{

    public MyMapView(Context context, String apiKey) {
        super(context, apiKey);

    }
    public MyMapView(Context context, AttributeSet attrs) {
        super(context, attrs);

    }
    public MyMapView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if(event.getAction()==MotionEvent.ACTION_DOWN){
            Log.v("MyMapView","Touched");
        }

        return false ;
    }



}

来自onCreate()的{​​{1}}

MapActivity

2 个答案:

答案 0 :(得分:1)

你的onTouchEvent()应该返回false,否则它将消耗该事件。

您还可以实例化MapController并使用它来更改视图。这是我正在处理的应用程序的代码片段:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mapview);

    myMapView = (MapView) findViewById( R.id.myMapView );
    myMapView.setBuiltInZoomControls( true );
    myMapController = myMapView.getController();

    myPoint = new GeoPoint(0, 0);
    myMapController.setCenter( myPoint );
    myMapController.zoomToSpan( 360 * MILLION, 360 * MILLION );
}

答案 1 :(得分:0)

我错了。

mMapView=(MyMapView) findViewById(R.id.mapper_map); 

应该是

mMapView=(MapView) findViewById(R.id.mapper_map); 

这解决了这个问题。

非常感谢。