web-dev-qa-db-ja.com

正しい住所形式を使用して、Google GeoCoding APIから最も正確な結果を取得します

Google GeoCoding APIに住所文字列を提供して、地図上で最も正確な結果を取得するための標準形式はありますか。

例えば次のクエリでは正しい結果が得られません。

http://maps.googleapis.com/maps/api/geocode/xml?address=bloom,Bloomfield,CT,06002,USA&sensor=false

ありがとう

マンディープ

21
mandeep-dhiman

推奨される形式は次のとおりです。

House Number, Street Direction, Street Name, Street Suffix, City, State, Zip, Country

明らかに、提供できる情報が少ないほど、結果の具体性は低くなります。

サンプルでは、​​ジオコーダーが「bloom」という名前の道路を検索していますが、CTではなくOHでも同様の一致があります。クエリから「ブルーム」を削除して検索すると、ブルームフィールド、CTが返されます。

25
Casey

Googleアドレス検索の定義:

address-ジオコーディングする住所を、当該国の全国郵便局で使用される形式で指定します。会社名やユニット、スイート、フロア番号などの追加の住所要素は避けてください。

https://developers.google.com/maps/documentation/geocoding/#geocoding

ジオコーダークエリをフォーマットして、成功したリクエストの数を最大化するにはどうすればよいですか?

ジオコーダーは、住所を地理座標にマッピングするように設計されています。したがって、クエリが成功する可能性を最大化するために、次のガイドラインに従ってジオコーダーリクエストをフォーマットすることをお勧めします。

  • 関係国の全国郵便サービスで使用される形式に従って住所を指定します。
  • 関係国の郵便サービスで定義されている住所に含まれていない会社名、ユニット番号、フロア番号、スイート番号などの追加の住所要素を指定しないでください。
  • 可能な場合は、建物名よりも建物の番地を優先して使用します。
  • 可能であれば、交差道路を指定するよりも、番地のアドレス指定を使用します。
  • 近くのランドマークなどの「ヒント」を提供しないでください。

https://developers.google.com/maps/faq#geocoder_queryformat

5
phlegx

答えが不完全であることがわかり、ソースがありませんでした。

こちらをご覧ください: https://developers.google.com/places/documentation/autocomplete#place_autocomplete_responses

GoogleのマップオートコンプリートAPIは、はるかに単純な形式を返します: "Street address、City、Country"これで、そのような文字列を使用して住所を検索でき、1​​つの正確な結果が得られます。さらに、オートコンプリートAPIを使用すると、詳細なリクエストに使用できる一意の識別子も取得されます。

住所の形式は、実際にいる場所に大きく依存します。米国では、「家番号、通りの方向、通りの名前、通りの接尾辞」が理にかなっている場合がありますが、ヨーロッパのほとんどではクエリが成功しません。

EUのほとんどの住所は「Kumpelstraat 25A」、「Psolevcu 331/26b」のように異なります(多くの場合「Streetname number suffix」)。

したがって、コードを単一の領域(米国、EUのほとんど)にバインドすると、フォーマットを適切にハードコーディングできます。
より柔軟なシステムが必要な場合は、ターゲットオーディエンスの適切なフォーマットを確認するか、googles APIのいずれかをクエリして、適切な文字列を自動的に取得する必要があります。リンクしたものは非常に優れていますが、1日あたり無料のリクエスト制限があるAPIキーが必要です。

4
John

私はこの質問につまずいて、私のために働いた解決策を見つけました:

答えはコンポーネントフィルタリングを使用して見つけることができると思います。 https://developers.google.com/maps/documentation/geocoding/#ComponentFiltering

JavaScriptの例:

var request = require('request');

var url = "https://maps.googleapis.com/maps/api/geocode/json?" +
    "address=Herengracht 180" +
    "&components=postal_code:1016 BR|country:NL" +
    "&sensor=false";

request(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body);
  }
  else {
    console.log('error', error);
  }
});
3
Whyhankee

アパートを避ける必要はありません。これは動作します:

https://maps.googleapis.com/maps/api/geocode/xml?address=14202+N+42nd+St+Unit+301+3361

「Apt」、「Room」、および「Suite」も同様に機能します

これらはすべて、301を下位前提として返し、「formatted_address」に「#301」として表示されます。

ポールが送ります...

1
Paul Kranz

「US」、「DE」、「FR」などの公式の国コードはうまく機能しないことがわかりました。それらを完全な国名に置き換えると、はるかに良い結果が得られます。

記載されているソースは見つかりませんでした。

0
Meran23