2015-05-06 9 views
11

używam mapy forge 0.5.1 biblioteki (api reference) Śledzę wszystkie oficjalne instrukcje, ale mam następujący problem:Pobierz szerokości i długości geograficznej pozycji kliknięciu na mapach forge 0.5.1 MapView

mam załączeniu onTouchListener na

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

ale gdy próbuję wywołać mapView.getProjection metoda(), otrzymuję erro r "Nie można rozwiązać metody getProjection(). Nawet jeśli metoda zostanie wywołana w wielu przykładach online, nie ma oficjalnego odwołania do api ani w 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; 
     } 
    }); 

Czy istnieje alternatywny sposób, aby uzyskać szerokość i długość geograficzną punktu gwintowany wykorzystaniem mapsforge lib? czy robię coś źle? Jeśli nie ma sposobu na uzyskanie współrzędnych po dotknięciu, wydaje mi się, że w bibliotece brakuje czegoś bardzo ważnego.

Dziękujemy

Odpowiedz

6

Zastosowanie

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

one odwrócone powiązania w wersji 0.4 lub SO- teraz zamiast się projekcję z MapView, mijamy MapView do projekcji.

1

Czy jesteś pewien, że zaimportowałeś odpowiedni MapView? Istnieje wersja Google MapView, która nie ma tej funkcji, jeśli zaimportowałeś ją, może ona myślała o niewłaściwej klasie.

+0

Nie, zadeklarowałem mój MapView jako org.mapsforge.map.android.view.MapView. – karvoynistas

+0

Hmm. Po prostu spojrzałem na dokumenty, które wskazałeś - tam też nie ma funkcji getProjection. Nie wiesz, dlaczego uważasz, że ta funkcja powinna istnieć. –

+0

Starsze wersje mapforge jak 0.3 lub 0.4 zawierają metodę getProjection. Chodzi o to, czy jest tak, aby uzyskać współrzędne klikniętego punktu? To dziwne, że starsze wersje są bardziej kompletne niż poprzednie. – karvoynistas

1

Można użyć zdarzenia onTap z , aby nie trzeba było obsługiwać zdarzenia `` View.onTouch, które jest trudniejsze w identyfikacji pojedynczego naciśnięcia/kliknięcia.

// 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

Dziękuję, chłopaki .... –

Powiązane problemy