安卓自定义地图视图

3

我正在尝试创建一个扩展版的MapView

问题在于定义了MapView的扩展版本后,地图视图不会平移。

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

我还想知道是否有任何方法可以平移地图视图。

当使用相同的源代码与库存版本的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 ;
    }



}

我从MapActivity中的onCreate()函数开始。

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

}

我怀疑这可能是因为你从一些onTouch方法中返回了true - 尝试返回false; 这应该允许你的类执行一些操作,然后让触摸事件传播到基类来执行其操作。但是让我们看看你的代码。 - John J Smith
@ John J Smith,帖子中的代码已更新。 - Shardul
2个回答

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 );
}

它返回了false。但是它现在仍然没有响应。 - Shardul

0

我把它转换错了。

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

应该是

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

这解决了问题。

无论如何,还是谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接