2012-12-27 25 views
7

Volevo provare l'integrazione con OpenStreetMap di osmdroid, ma mi sono bloccato a un problema in cui non avevo idea di cosa mancasse. Lo scenario è il seguente:osmdroid visualizza una griglia vuota

Sintomo: il widget mappa viene visualizzato ma solo con una griglia vuota.

Questo è nella mia classe di attività:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    MapView mapView = new MapView(this, 256); 
    mapView.setTileSource(TileSourceFactory.MAPNIK); 
    mapView.setClickable(true); 
    mapView.setBuiltInZoomControls(true); 
    setContentView(mapView); 
} 

(ho provato selezionando varie TileSources con apparentemente nessuna differenza)

mio Manifesto comprende anche queste autorizzazioni (come figlio di <manifest>, dopo <uses-sdk>) :

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

... e il mio emulatore è altrimenti collegato a Internet, ad es. i browser web funzionano.

osmdroid e slf4j si trovano nel percorso di generazione. L'app viene compilata senza problemi e non genera eccezioni.

Cosa potrebbe essere sbagliato?

Grazie mille!

RISOLTO: questo è stato causato dal fatto che il mio emulatore non dispone di una memoria esterna per memorizzare le tessere della mappa.

+0

Correzione del testo: My Manifest include anche queste autorizzazioni (come figlio di [manifest], dopo [uses-sdk]). – Peter

+0

Sto usando osmdroid 3.0.7 – Peter

+0

probabilmente potresti aiutarmi anche @Peter, ... http://stackoverflow.com/questions/25460443/empty-osmdroid-map-where-to-custom-the- new-map – gumuruh

risposta

0

Sono abbastanza nuovo per OSMdroid ma provate a farlo?

setContentView(R.layout.offline_map_activity); 
mapView = (MapView) findViewById(R.id.openmapview); 

Si sarebbe anche bisogno di avere offline_map_activity.xml nelle vostre res/layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

    <org.osmdroid.views.MapView 
     android:id="@+id/openmapview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"/> 
</LinearLayout> 

Spero che questo funziona per voi. Almeno questo ha funzionato per i miei codici :)

+2

Ciao! Grazie per la tua risposta! Tuttavia, il fatto che sia già stata visualizzata una griglia di una mappa vuota a schermo intero conferma che il mio problema non è legato al layout: setContentView (mapView) ha funzionato correttamente. La scorsa notte ho capito che era qualcosa di completamente diverso: il mio emulatore non aveva memoria esterna ... – Peter

+0

ah non vedo meraviglia haha. felice che tu abbia scoperto il problema :) – lyk

+0

comunque, @lyk, potresti aiutarmi anche tu? http://stackoverflow.com/questions/25460443/empty-osmdroid-map-where-to-custom-the-new-map – gumuruh

-1

i tink il dispositivo non ha SD. È stato modificato il percorso della cache

OpenStreetMapTileProviderConstants.setCachePath(this.getFilesDir().getAbsolutePath());