Google Location APIを使用して 5 秒ごとにユーザーの位置を取得すると、正常に動作します。その場所の住所を知らなければなりません。使用できることはわかっていますGeocoder.getFromLocation
が、ドキュメントに記載されているように、常に使用できるとは限らず、機能するにはインターネット ネットワークが必要です。アドレスをオフラインにする別の信頼できる方法はありますか?
2 に答える
アドレスをオフラインにする別の信頼できる方法はありますか?
したがって、Geocoder を使用すると、この場合のネットワークではバックエンド サービスなしでは機能しません。
マップにオフラインでアクセスしたい場合は、マップを読み取れるようにデバイスに保存する必要があります。そのため、選択肢は 1 つしかなく、マップ データをダウンロードして処理し (モバイル デバイス用にサイズを最適化)、高速検索用のデータを格納する構造を作成する必要があります (ほとんどの場合、クワッド ツリーまたは R ツリー) 1。それはまったく些細なことではありません。または (存在する場合) いくつかのオフライン マップを使用しますが、データはデバイスに保存する必要があります。
1 オフラインの住所検索に焦点を当てた個人的なプロジェクトに取り組んでいます。OpenStreetMaps をデータ ソースとして使用しています。しかし、そう簡単ではないと断言できます。生データは巨大な XML ファイル (1 ~ 600 GB) に保存されるため、データを処理し、データベースにシリアル化されたクアッド ツリーに保存するデスクトップ用の変換ツールを作成する必要がありました (ツリーは巨大でメモリに追加できないため、キャッシュして半永続性を使用する必要があります)。つまり、ツールはデバイスで使用するためのデータを準備します。最終的なファイルのサイズは約 100 MB ~ 1 GB です (ソースのサイズによって異なります)。もっと話せますが、ここは適切な場所ではありません。
私はいくつかの速度パフォーマンステストを行いました.「イラスト」のためだけに、パフォーマンスを公式のGeocoder APIと比較しました:
ただし、ツールは完成していませんが、上記のように機能します。パフォーマンスは悪くないと思いますが、最適化できると思います (最適化されたステートメントとツリー アルゴリズム)。