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 を追加するのを忘れているようです。私は両方を行ったので、何が間違っていたのか途方に暮れています。洞察を提供していただければ、非常にありがたいです。
解決済み:
理由はわかりませんが、何度か再起動するとマップが表示されます。その後、すべてがうまくいくようです。これは、新しい仮想デバイスで試すと再び発生します。アプリを数回閉じて再起動すると、正常に動作し始めます。