我正在尝试创建一个扩展版本的 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()MapActivity

protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.mapper);
    mMapView=(MyMapView) findViewById(R.id.mapper_map);
    mMapView.setSatellite(false);       

}
有帮助吗?

解决方案 2

我把它错了。

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

应该

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

这解决了问题。

谢谢。

其他提示

您的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 );
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top