3

の拡張バージョンを作成しようとしていますMapView

問題は、 の拡張バージョンMapViewが定義されている場合、mapview がパンしないことです。

onTouchListenerInside my custom map ビューを実装しています。

また、マップビューをパンできる方法があるかどうかも知りたいです。

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

}
4

2 に答える 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 );
}
于 2011-01-12T12:54:54.037 に答える
0

キャストを間違えていました。

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

する必要があります

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

これで問題は解決します。

とにかくありがとう。

于 2011-01-18T07:17:54.533 に答える