web-dev-qa-db-ja.com

Google Geocode APIを使用して国固有の結果のみを取得する

シンガポールの郵便番号を使用して緯度経度を取得するためにGoogle Geocode APIを使用しています

私は次のデータを取得しようとしました:

(1) http://maps.googleapis.com/maps/api/geocode/json?address=505468&sensor=false

(2) http://maps.googleapis.com/maps/api/geocode/json?address=Singapore%20505468&sensor=false

(3) http://maps.googleapis.com/maps/api/geocode/json?address=Singapore%20505468&sensor=false&region=sg

しかし、それはインドからの位置を返します

https://developers.google.com/maps/documentation/geocoding/?hl=fr#RegionCodes

国別(シンガポール)の結果のみを取得するその他の方法。

私はそれが正しい結果を返すようにしようとしました

http://maps.googleapis.com/maps/api/geocode/json?address=Singapore%20133224&sensor=false

17
steve

結果を特定の国に制限するには、コンポーネントフィルタリングを使用します。

URLは http://maps.googleapis.com/maps/api/geocode/json?address=Singapore%20505468&sensor=false&components=country:SG

しかし、ここでは問題ではありません。結果の国はSGに設定されていますが、場所は間違っています(インドに配置されている)ため、ジオコーダーの結果は間違っています。

私は与えられたアドレスが怖いです(郵便番号が存在しないようです)、あなたができる唯一のことはグーグルに間違った結果を報告することです。

22
Dr.Molle

これを行う正しい方法は、 componentRestrictions を指定することです

例えば:

var request = {
    address: address,
    componentRestrictions: {
        country: 'UK'
    }
}
geocoder.geocode(request, function(results, status){
    //...
});
24
Deminetix
8
Vivek Barai

このアプローチを使用できるはずです http://maps.googleapis.com/maps/api/geocode/json?components=country:US|postal_code:5037

住所を削除し、コンポーネントに郵便番号を渡し、住所に値があるかどうかを確認します。郵便番号を持つユーザーが選択した別の値を渡して、APIを検証します。

1
Jabes Pauya