0

私はAndroidアプリのプロトタイプを作成しています。これにより、別のプラットフォームでホストされる(ユーザー生成の)データと組み合わされた大量の静的な量の環境データを処理できる多用途のマップが作成されます。私の現在のアプローチは、Google Fusion Tablesを介して大きな静的データをフェッチすることです(元のシェープファイル-QGisMapsで.kmlとしてエクスポートした.shp、.dbf、.shx-私が使用している「小さい」.kmlはすでに66.4MB、140 MBを超える最終使用を目的としています...)。kmlをスライスすることは可能ですが、これは読み込み時間に影響しますか?Googleマップの形状データの現在の例は、https://www.google.com/fusiontables/DataSource?snapid=S717313eWaJで確認できます。

しかし今、私はこの1層のデータが私のマシンに非常にゆっくりとロードされており、このマップをAndroidアプリに配置する煩わしさを認識していないため、正しい道を進んでいるかどうか疑問に思っています。別のサーバーからのデータを、その上に別の(フィルター可能な)レイヤーとして配置します。このレイヤーはユーザーからデータを収集するため、「静的」ではなく定期的に更新されます。整数値は地理データごとにカラーで表示されます。

何人かの人々は私にオープンストリートマップを使うようにほのめかしました、しかし何人かはAndroidがグーグルマップで非常に雄弁であるとアドバイスしました-開発の途中で私が進むべき正しい方向を選んだか、またはおそらくより少ない問題に直面しているかどうか誰かが私に言うことができると思いました代替ソリューション。

誰かがAndroidの1つのマップにレイヤー化された2つの異なるソースからのマップデータを組み合わせる問題についてアドバイスしてくれたら本当にうれしいですが、1つのデータは巨大ですが静的であり、他のユーザー生成値です。

お時間を割いていただき、ありがとうございました。

最高のビルギット

編集#1:データをホストし、アプリでWMSにクエリを実行して、GeoServerを自分でセットアップできるようにしたいと思って、現在OpenStreetMapsに切り替えています。データのサイズはまだ何らかの方法で圧縮する必要があるようです。最新情報をお知らせします。

4

2 に答える 2

1

すべての懸念事項に対応することはできませんが、マップとオーバーレイに関する私の経験の一部を共有できます。

知っておくべき最も重要な概念は、memory heap. 各 Android アプリケーションには、 と呼ばれるデータ オブジェクトの割り当てに使用できる最大メモリ量がありますmemory heap。この制限はデバイスごとに異なり、小型の古いデバイスの 16 MB から新しいタブレットの 64 MB まで可能です。

そうは言っても、データを保持するために必要なデータ構造がアプリケーションで利用可能な最大ヒープを超える場合、一度にすべてのデータをロードすることはできません。

また、大量のメモリを使用すると、重要なアクティビティ (電話など) によって追加のメモリが必要になったときに、ユーザーまたは SO によってアプリケーションが終了される可能性が高くなります。

さて、地図の部分に行きます...

Google マップと、OpenStreet マップ用の mapsforge API を使用しました。Google マップにはインターネット接続が必要ですが、mapsforge ではローカル マップ ファイルまたはオンライン接続を使用できます。OpenStree マップはサテライト ビューを提供しません。

パフォーマンスに関しては、オフライン マップでは必要に応じて画像をレンダリングする必要がありますが、オフライン マップではレンダリング済みのマップ イメージをダウンロードするため、オンライン接続の方が高速になる傾向があります。Mapforge は、ローカル キャッシュを使用してこれを少し改善できます。

オーバーレイの表示:

私は両方の API を使用して、マップ上に約 10,000 ポイントのパスを追加のオーバーレイ (コンパス、スケール バー、ポップアップなど) とともに表示しました。コードはミッドランデ デバイスでスムーズに実行されます。ただし、私のコードには、既存のパスを変換することにより、(ユーザーがマップをズームまたは移動するときに) パスの再作成を減らすための最適化がいくつかあります。

幸運を。

于 2012-10-07T13:24:43.243 に答える
0

これが、私が最終的に .shp ファイルを OSMdroid の XYTilesource で表示できる形式に変換した方法です。

レイヤーを .kml 投影 WGS84 として個別にエクスポートし、それらをレイヤーとして TileMill にインポートしました。CSS で各レイヤーの色を定義した後、マップを MBTiles のセットとしてエクスポートしました。それらを Mapbox.com にアップロードしました。そこから、OSMdroid Mapview で a.tiles.mapbox.com/v3/myUsername.myTiles/{z}/{x}/{y}.png の形式のタイルを取得できます。

final myTileSource tileSource = new XYTileSource("myTiles", null, 10, 16, 256, ".png", "http://a.tiles.mapbox.com/v3/myUserName.myTiles/");
于 2012-10-26T21:30:33.927 に答える