Android personalizzato MapView
-
10-10-2019 - |
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);
}
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 );
}