0

こんにちは、Google のオートコンプリート検索ロケーション検索ボックスを使用しています。それは正常に動作します。しかし、JSON形式として得られるものに関して奇妙な問題があります

//geolocation   
var input = document.getElementById('searchTextField');
var options = {     
};
var autocomplete = new google.maps.places.Autocomplete(input,options);
//autocomplete.bindTo('bounds', map); 

google.maps.event.addListener(autocomplete, 'place_changed', function() {
     $("#results").html('');
  var place = autocomplete.getPlace();
    $("#results").append('<p> Latitude and Longtidute : '+place.geometry.location +'</p>');
    $("#results").append('<p> Address : '+place.formatted_address +'</p>');


    //extracting useful part    

    $.each(place.address_components, function() {
      if(this.types[0]=="route"){
           $("#results").append('<p> route : '+this.long_name +'</p>');
      } 

      if(this.types[0]=="locality"){
          $("#results").append('<p> locality : '+this.long_name +'</p>');
      } 


      if(this.types[0]=="administrative_area_level_2"){
          $("#results").append('<p> administrative area 2 : '+this.long_name +'</p>');
      } 

      if(this.types[0]=="administrative_area_level_1"){
          $("#results").append('<p> administrative area 1 : '+this.long_name +'</p>');
      } 


      if(this.types[0]=="country"){
          $("#results").append('<p> country : '+this.long_name +'</p>');
      } 
  });

    $("#results").append('<p> Places Name : '+place.name+'</p>');

    var searchAddressComponents = place.address_components;


    $.each(searchAddressComponents, function(){
      if(this.types[0]=="postal_code"){
          searchCountry=this.short_name;
      } 
  });
});

ご覧のとおり、long_name を明示的に使用して long_name をキャッチします。つまり、カナダを取得する場合は、CA ではなくカナダとして取得したいと考えています。残念ながら、ここでは、long_name と short_name の両方で CA が表示されます。しかし、非常に奇妙なのは、API リクエストを Web ブラウザに直接入力すると、カナダのみとして full_name が返されることです...コードにいくつかのオプションが欠けている可能性があります。

「The Toronto Condos, Capreol Court, Toronto, ON, Canada」コードの結果を添付します

緯度と経度 : (43.640368, -79.39589699999999)

住所 : 17 Capreol Court、トロント、ON、カナダ

ルート:カプレオルコート

産地 : トロント

行政区域 1 : オン

国 : CA

Places Name : トロント コンドミニアム

(マインドON&CA)

ブラウザを直接使用する場合http://maps.googleapis.com/maps/api/geocode/json?address=The+Toronto+Condos,+Capreol+Court,+Toronto,+ON,+Canada&sensor=false

それは私に与えます

"results" : [
      {
         "address_components" : [
            {
               "long_name" : "Capreol Court",
               "short_name" : "Capreol Ct",
               "types" : [ "route" ]
            },
            {
               "long_name" : "CityPlace",
               "short_name" : "CityPlace",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Old Toronto",
               "short_name" : "Old Toronto",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "Toronto",
               "short_name" : "Toronto",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Toronto Division",
               "short_name" : "Toronto Division",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Ontario",
               "short_name" : "ON",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Canada",
               "short_name" : "CA",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "M5V",
               "short_name" : "M5V",
               "types" : [ "postal_code_prefix", "postal_code" ]
            }
         ],

確認していただけますか...

4

1 に答える 1

1

指定されたリンクで得られるのは、ジオコーディング サービスの応答です。
しかし、あなたのコードはジオコーディングを使用しておらず、places-autocomplete の実装です。

応答はPlace Details Responseになります。これは、ジオコーディング サービスによって返される結果とは異なる場合があります。

于 2013-09-01T00:05:55.180 に答える