Domanda

Sto cercando di creare una versione estesa di MapView.

Il problema è quando si definisce la versione estesa di MapView, mapview non pan.

sto attuando un onTouchListener Dentro il mio guarda la mappa personalizzata.

Voglio anche sapere v'è alcun metodo da dove posso spostare la mapview.

Il problema non persiste quando si utilizza la versione di magazzino MapView con lo stesso codice sorgente.

Modifica

MyMapView fonte:

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



}

il mio onCreate() da MapActivity

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

}
È stato utile?

Soluzione 2

stavo facendo il casting sbagliato.

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

dovrebbe essere

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

questo risolve il problema.

Thankx in ogni modo.

Altri suggerimenti

Il tuo onTouchEvent () deve restituire falso, altrimenti consumerà l'evento.

È anche possibile creare un'istanza di un MapController e utilizzarlo per modificare la visualizzazione. Ecco un frammento di codice da un app su cui sto lavorando:

    @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 );
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top