ユーザーがMapViewで陸上または海上の経度/緯度のペアを選択しているかどうかを検出する必要があるアプリケーションを実行しています。Google マップ サービスにリクエストを送信することで、この回答を得ることができましたが、オフラインでも動作するようにしたいと考えています。だから私はこれが機能する 2 つの方法を思いつきました。私はビットマップとメモリの領域ではどちらかというと緑色なので、あなたの意見を聞きたいと思いました。
主なアイデアは、カバーしたいマップ エリアの小さな白黒ビットマップ (200x200 ピクセルなど) を保存することです。ユーザーが経度/緯度のペアを選択すると、そのペアが一連の x、y ピクセルに変換され、ピクセル座標が黒のピクセル (陸) または白のピクセル (海/水) を指しているかどうかを確認します。これまでに私が思いついた2つの方法があります。
オプションA
ユーザーが経度/経度のペアを選択しようとしているときにビットマップを遅延読み込みし、getPixel()
それが陸地か海域かを確認するために使用します。イメージへの WeakReference を保持し、GC が発生するたびにガベージ コレクションを実行できるようにします。
オプション B
ビットマップの各ピクセル座標ペアを SQLite データベースに保持し、ユーザーが経度/緯度のペアを選択しようとするたびにルックアップを実行します。
私はAが速度的には最高のものだと推測しています (最初にディスクからビットマップを読み取るオーバーヘッドを無視します) が、ビットマップをメモリに保持するのはバッテリの観点からコストがかかりますか?
これを行う方法について他に提案がある場合は、ここに記載したいと思います:)