7

osmdroid による OpenStreetMap の統合を試してみたかったのですが、何が欠けているのかわからないという問題に行き詰まりました。シナリオは次のとおりです。

症状: マップ ウィジェットが表示されますが、空のグリッドしか表示されません。

これは私のActivityクラスにあります:

@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);
}

(一見違いがないように、さまざまなTileSourceを選択してみました)

マイ マニフェストには、次のアクセス許可も含まれます (の子として<manifest>、の後に<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" />

...それ以外の場合、エミュレーターはインターネットに接続されています。ウェブブラウザは動作します。

osmdroid と slf4j はビルド パスにあります。アプリは問題なくコンパイルされ、例外は生成されません。

何が間違っている可能性がありますか?

どうもありがとう!

解決済み: これは、エミュレーターにマップ タイルをキャッシュするための外部ストレージがないことが原因でした。

4

2 に答える 2

0

私もOSMdroidにはかなり慣れていませんが、これを試してみてください。

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

res/layouts に offline_map_activity.xml も必要です。

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

これがうまくいくことを願っています。少なくともこれは私のコードではうまくいきました:)

于 2012-12-28T09:57:11.100 に答える
-1

あなたのデバイスにはSDがありません。キャッシュ パスを変更しました

OpenStreetMapTileProviderConstants.setCachePath(this.getFilesDir().getAbsolutePath()); 
于 2016-07-31T21:49:05.647 に答える