0

このトピックについて少し調べてみたところ、前回 (特に Google マップについて) 質問されたときの答えは「違法です」でした。Google マップでオフライン キャッシュを自分で実行できるようになったのに、なぜそれが依然として違法なのですか?

とにかく、小さなマップ (数平方マイル) をパッケージ化する必要があるアプリがあります。私は osmdroid の実行を検討しましたが、彼らが何をしているのかを理解するのは非常に困難です。私は彼らの SVN リポジトリを見て、Play ストアでサンプル アプリをチェックアウトしましたが、がっかりしました。アプリ自体は私が必要としているものをほぼ正確に示していますが、SDK に含まれていない奇妙な形式のコードを使用しています。osmdroid は、現時点では私の最良の選択肢のように思えますが、利用できるリファレンスはあまりないようです。

誰かが osmdroid またはパッケージ化されたマップを可能にする他の SDK を開始する正しい方向に私を向けることができれば、私はそれを大いに感謝します.

注:osmdroidで試してみましたが、実行すると

 mapView.setUseDataConnection(false); 

ファイルが正しいディレクトリにあるように見えても、マップは何もロードしません (すべてのファイルもそこにダウンロードされるため)。

4

1 に答える 1

1

Google マップのように Osmdroid を使用するには、プロジェクトに osmdroid-android-3.0.x.jar (x の場合 - バージョン 5 とバージョン 7 を使用しました) という 2 つの jar ファイルが必要です。もう 1 つの jar は slf4j-android-1.5.8.jar です。(これの新しいバージョンがあるかもしれません。どこから入手したか覚えていませんが、Osmdroid Web サイトのどこかにリンクがあるはずです)。コードは Google マップと非常によく似ています。これは私が作成できる最小の実例です

package osmdemo.demo;

import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;

import android.app.Activity;
import android.os.Bundle;

// This is all you need to display an OSM map using osmdroid
public class OsmdroidDemoMap extends Activity {

    private MapView         mMapView;
    private MapController   mMapController;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.osm_main);
        mMapView = (MapView) findViewById(R.id.mapview);
        mMapView.setTileSource(TileSourceFactory.MAPNIK);
        mMapView.setBuiltInZoomControls(true);
        mMapController = mMapView.getController();
        mMapController.setZoom(13);
        GeoPoint gPt = new GeoPoint(51500000, -150000);
        //Centre map near to Hyde Park Corner, London
        mMapController.setCenter(gPt);

    }
}
/* HAVE THIS AS YOUR osm_main.xml
---------------------------------------------------------- XML START
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <org.osmdroid.views.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:id="@+id/mapview"
        ></org.osmdroid.views.MapView>
</LinearLayout>
---------------------------------------------------------- XML END
Include slf4j-android-1.5.8.jar and osmdroid-android-3.0.5.jar in the build path
(Google search for where to get them from)
*/

オフライン キャッシングについては、モバイル アトラス クリエーター (MOBAC) を使用して、関心のある領域の Osmdroid Zip 形式のアトラスを作成します。タイル ソースとして OpenStreetMap を使用します。zip ファイルを取得したら、それをデバイスの Osmdroid ディレクトリにドロップします。オフライン機能を提供する必要があります。データのダウンロード (およびそのコスト) を抑えるために、パケット データをオフにして、ロンドンの自分のアプリで常に使用しています。

于 2012-09-09T21:05:38.317 に答える