2

Android アプリで OSM を使用する予定で、osmdroid を試してみることにしました。これが私が今までやってきたことです。

1: slf4j-android-1.5.8.jar と osmdroid-android-3.0.8.jar をダウンロードして libs フォルダーにコピーし、ビルド パスに追加しました。

2: 私の Xml レイアウト ファイルのコードは次のようになります。

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

3: すべての権限をマニフェストに追加しました

<uses-permission android:name="android.permission.INTERNET"/>
    <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.WRITE_EXTERNAL_STORAGE" />

4: 私の on create メソッドは次のようになります

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mapify);
        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setTileSource(TileSourceFactory.MAPNIK);
        mapView.setBuiltInZoomControls(true);
        mapView.setClickable(true);
        mapController = mapView.getController();
        mapController.setZoom(15);
    }

私の問題は、コードが正常に実行されているにもかかわらず、エミュレーターで実行するとマップが表示されないことです。インターネットに接続していて、Google マップ ビューを使用しているときにマップを表示できます。私はインターネットを見回し、同じ問題に関するstackoverflowの質問もいくつか見ました。それらのほとんどは、権限を追加するのを忘れているか、ビルド パスに slf4j を追加するのを忘れているようです。私は両方を行ったので、何が間違っていたのか途方に暮れています。洞察を提供していただければ、非常にありがたいです。

解決済み:

理由はわかりませんが、何度か再起動するとマップが表示されます。その後、すべてがうまくいくようです。これは、新しい仮想デバイスで試すと再び発生します。アプリを数回閉じて再起動すると、正常に動作し始めます。

4

1 に答える 1

0

これは古い質問ですが、誰かが答えを必要とする場合に備えて。これは、エミュレーターにマップ タイルをキャッシュするための外部ストレージがない場合に発生する可能性があります。私はSDカードでエミュレータを作成し、 ストリートマップを開く(osmdroid)問題を解決しました。PCでマップされていない灰色のタイルが表示されます

于 2014-07-14T12:54:04.957 に答える