2015-05-06 13 views
11

Io uso le mappe forgiare 0.5.1 librerie (api reference) Ho seguito tutte le istruzioni ufficiali, ma ho il seguente problema:Ottenere latitudine e longitudine di una posizione cliccato su una mappa forgiare 0.5.1 MapView

ho allegato un'onTouchListener sul

(org.mapsforge.map.android.view.MapView) MapView

ma quando provo a chiamare il metodo mapView.getProjection(), ottengo l'erro r "Impossibile risolvere il metodo getProjection(). Anche se il metodo viene chiamato in molti esempi online, non è presente nel riferimento API ufficiale o in MapView.class. org.mapsforge.map.android.view.MapView

org.mapsforge.map.android.view.MapView mapView; 
mapView.setOnTouchListener(new View.OnTouchListener(){ 

     @Override 
     public boolean onTouch(View v, MotionEvent ev) { 
      int actionType = ev.getAction(); 
      switch (actionType) { 
       case MotionEvent.ACTION_DOWN: 

        return false; 

       case MotionEvent.ACTION_UP: 
        mapView.getProjection(); // the error is here 

        return true; 
       case MotionEvent.ACTION_MOVE: 
        return false; 
      } 
      return false; 
     } 
    }); 

C'è un modo alternativo per ottenere la latitudine e la longitudine del punto sfruttato utilizzando mapsforge lib? Sto facendo qualcosa di sbagliato? Se non c'è modo di ottenere le coordinate dopo un tocco, la cosa che manca alla libreria è qualcosa di molto importante.

Grazie

risposta

6

Usa

new MapViewProjection(mapView).fromPixels(double x, double y); 

hanno invertito il collegamento nella versione 0.4 o così- ora invece di ottenere la proiezione da un mapview, si passa un mapview ad una proiezione.

1

Sei sicuro di aver importato il giusto MapView? C'è una versione di Google di MapView che non ha quella funzione, se hai importato potrebbe pensare che sia la classe sbagliata.

+0

No, ho dichiarato il mio MapView come org.mapsforge.map.android.view.MapView. – karvoynistas

+0

Hmm. Ho appena guardato i documenti che hai indicato- non c'è neanche la funzione getProjection. Non sei sicuro del motivo per cui pensi che quella funzione debba esistere. –

+0

Le versioni precedenti di mapsforge come 0.3 o 0.4 contengono il metodo getProjection. Il punto è, c'è comunque per ottenere le coordinate del punto cliccato? È strano che le versioni precedenti siano più complete di quelle precedenti. – karvoynistas

1

È possibile utilizzare l'evento onTap da TileRendererLayer, in modo da non dover gestire l'evento `` View.onTouch, che è più difficile nell'identificare un singolo tocco/clic.

// tile renderer layer using internal render theme 
MapDataStore mapDataStore = new MapFile(filename); 
TileRendererLayer tileRendererLayer = 
     new TileRendererLayer(tileCache, 
           mapDataStore, 
           this.mapView.getModel().mapViewPosition, 
           AndroidGraphicFactory.INSTANCE) { 
    @Override 
    public boolean onTap(LatLong tapLatLong, Point layerXY, Point tapXY) { 
     ShowTapLocation(tapLatLong); 
     return true; 
    } 
}; 
+0

Grazie, ragazzi .... –

Problemi correlati