0

I've created an autocomplete address search text box. My problem is that I just can't make it work fine:

  1. Addresses are out of the bounding box usually, whatever I do - this didn't help.
  2. Finds addresses that doesn't contain the typed text.
  3. Finds less addresses, than max but it doesn't contain the good result.
  4. The result list is totally irrelevant sometimes.
  5. I need to type almost the whole address to get the correct result.

Source:

    Geocoder geocoder = new Geocoder(this, Locale.getDefault());
       List<Address> addresses = null;
          try {
             if (Geocoder.isPresent()) {
                // Bounding box: Hungary
                addresses = geocoder.getFromLocationName(text, 5, 46.13, 21.96, 48.89, 16.69);
             }
          } catch (IOException e) {
             Log.v(tag, "Geocoding error: " + e.getMessage());
             e.printStackTrace();
          }

My aim is to make an address search text box which gets the same result as in Android Maps seach text box - except the previously typed/favourite addresses and etc., which is an other story.

4

1 に答える 1

0

Google Places Autocomplete APIが役立つ場合があります。私の知る限り、商用アプリで使用するにはライセンスを取得する必要があります。アプリが無料の場合は、問題ありません。

不正確なジオコーダーの結果に関する編集:

私はまだ Geocoder をあまりいじっていません。しかし、現時点で言えることは次のとおりです。

一部のデバイスではすべてのメソッドが null を返すことを考慮する必要があります (Geocoder.isPresent() を確認してください)。これは、Geocoder が一部のデバイスで欠落している可能性のある基本的な実装に依存しているためです。

また、これらの結果が Google プレイス以外のジオコーダー エンジン/サービスから得られた可能性もあります。

その上、クエリの結果は決して完璧ではありません。位置がずれているか、Geocoder データが十分に正確でない (または単に古い) ため、現在の位置の正確な住所を取得することはめったにありません。

本当に正確な住所が必要な場合は、最適な候補のリストと、住所を手動で編集する手段の両方をユーザーに提供する必要があります。

場所の名前に基づいてより正確な結果が必要な場合は、ニーズに合ったパフォーマンスを発揮する利用可能なオンライン サービスを調べることができます。その一例が geonames.org です。それらのデータベースで十分な場合は、選択したサービスとやり取りするための Java API を取得または実装し、Geocoder の代わりにそれを使用する必要があります。

于 2012-07-08T21:25:36.763 に答える