考古学的POI(関心のあるポイント)をプロットするAndroidマッピングアプリケーションを構築するための要件があります。要件は、Googleマップの衛星ビューによく似た航空写真を用意することです。ただし、もう1つの要件は、データ接続が利用できない場合のオフラインマッピング機能であるため、Googleマップの使用は除外されます。
だから私は2つの質問があります。
OSMDroidは、Bingを使用せずに、Arial PhotographyまたはSatelliteをサポートするタイルソースに無料でアクセスできますか?
OSMがアリエルフォトグラフィーマップを持っているBingをサポートできることは知っていますが、それを機能させることができません。あなたが私に指摘できるBing固有のチュートリアル、または私が数時間探して髪を抜いてきたときにOSMDroidに表示するBingマップを取得する方法の簡単な例はありますか?
ecliseでは、OSMDroid(Mapink)のデフォルトマップを表示する簡単なアプリを作成することができました。Bingを試して使用するために、プロジェクトソースに3つのクラスを追加しました。BingMapTileSource.Java、ImageryMetaData.JavaおよびImageryMetaDataResouce.Java。これらは、OSMDroid SVNのTileProviderディレクトリのBingサブフォルダーから取得しました(リンクはこちら) 。
ただし、これをonCreateで次のように使用すると、BingMapTileSource.javaクラスでnullポインターエラーが発生します。
MapView mapView = new MapView(this, 256);
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
String m_locale=Locale.getDefault().getISO3Language()+"-"+Locale.getDefault().getISO3Language();
mapView.setTileSource(new BingMapTileSource("Bing",m_locale));
mapView.getController().setZoom(10);
mapView.getController().setCenter(new GeoPoint(39.461078, 2.856445));
setContentView(mapView);
この問題の原因は、次のクラス変数が最初に使用される前に初期化されないことだと思います。
s_roadMetaData = null;
s_aerialMetaData = null;
s_aerialwithLabelsMetaData = null;
それらが初期化されているのを見ることができる唯一の場所は、呼び出されることのないInitMetaDataと呼ばれる静的メソッドです。
public static synchronized void initMetaData(final Context aContext)
その目的に関するいくつかの手がかりは、そのJavadocに記載されていますが。
/**
* Initialize BingMap tile source.<br>
* This method should be invoked before class instantiation.<br>
* It get dynamically the REST service url to be used to get tile in each supported map view mode.
* @param a_BingMapKey The user's BingMap key.
* @throws Exception
*/
しかし、これの使い方がわかりません。チュートリアル、例、またはいくつかのコードへのアドバイスやポインタをいただければ幸いです。