2

考古学的POI(関心のあるポイント)をプロットするAndroidマッピングアプリケーションを構築するための要件が​​あります。要件は、Googleマップの衛星ビューによく似た航空写真を用意することです。ただし、もう1つの要件は、データ接続が利用できない場合のオフラインマッピング機能であるため、Googleマップの使用は除外されます。

だから私は2つの質問があります。

  1. OSMDroidは、Bingを使用せずに、Arial PhotographyまたはSatelliteをサポートするタイルソースに無料でアクセスできますか?

  2. 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
     */

しかし、これの使い方がわかりません。チュートリアル、例、またはいくつかのコードへのアドバイスやポインタをいただければ幸いです。

4

4 に答える 4

0

さて、Bingマップを機能させる際の問題を理解しました。必要だったのは、BingMapTileSouceのインスタンス化の前に、前述の3つのメタデータオブジェクトをインスタンス化する次の静的メソッドを使用することでした。

try 
{
 BingMapTileSource.initMetaData(this);
}
 catch (Exception e)
{       
 e.printStackTrace();
}
于 2012-05-30T14:16:16.970 に答える
0

オフラインの衛星画像の要件は、画像のライセンスを別途取得する必要があることを意味します。特定の同意なしにそのような使用を許可するプロバイダーはないと思います。

于 2012-05-29T10:48:31.397 に答える
0

Digitalglobe、Geoeye など、アンテナの商用プロバイダーが多数あります。Google Earth で確認すると、マップの下部にプロバイダーが記載されています。

OpenAerialMap のような低解像度の無料画像もいくつかありますが、それ自体はもう機能していません。ただし、元のソース (http://openaerialmap.org/Data_Sources) を確認する価値があります。また、残りのアーカイブの少なくとも一部は、MapQuest Open Tiles API で利用できます。オフラインでのダウンロードも許可しているかもしれません。条件を確認してください。

2 つの警告 - 商用プロバイダーからの航空画像は、特にオフラインの場合、非常に高価になる可能性があります。また、あらゆるソースからの航空写真は、ラスター タイルの数倍の多くのスペースを必要とします。そのため、それらをデバイスにダウンロードするだけでも難しい場合があります。

于 2012-05-30T07:37:28.460 に答える