2016-12-10 8 views
2

私はこのスクリプトを使用します。Googleマップのapiから国を取得するには?

var place = autocomplete.getPlace(); 
latitude = place.geometry.location.lat(); 
longitude = place.geometry.location.lng(); 

street_number = place.address_components[0].long_name; 
route = place.address_components[1].long_name; 
locality = place.address_components[2].long_name; 
administrative_area_level_1 = place.address_components[3].long_name; 
country = place.address_components[5].long_name; 
postal_code = place.address_components[6].long_name; 

フルアドレスでたときにユーザーが正常に動作します。 ユーザーが都市または都市のみを入力した場合、国の値はplace.address_components [5]ではなくplace.address_components [2]:

返される配列のインデックスに適合する方法はわかりますか?

答えて

8

place.address_components配列の要素のインデックスには依存しないでください。その代わりに、 "種類"フィールドを分析して、国の対応する住所コンポーネントを見つけなければなりません。

Array.prototype.filter()Array.prototype.includes()の機能で実行できます。

var filtered_array = place.address_components.filter(function(address_component){ 
    return address_component.types.includes("country"); 
}); 
var country = filtered_array.length ? filtered_array[0].long_name: ""; 
+0

私はこの国のコードの代わりに地域名を受け取っていますが、これ以上の混乱はありません。 @ xomena、いつかGoogle apiが国の情報を含めずに結果を返すことができるかどうかを知りたいです。 – aidonsnous

+0

はい、Google APIは紛争地域の国を返しません。例をご覧くださいhttps://google-developers.appspot.com/maps/documentation/utils/geocoder/#place_id%3DEiUxMyBNb3JzJ2thIFN0cmVldCwgU2ltZmVyb3BvbCwgQ3JpbWVh – xomena

関連する問題