谷歌地理位置Json怪异的行为

时间:2013-08-31 12:58:13

标签: javascript jquery json google-maps geolocation

您好我正在使用谷歌的自动完整搜索位置搜索框。它工作正常。但我有一个奇怪的问题,我得到的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请求,它只给我full_name作为加拿大...可能是我在我的代码中缺少一些选项。

我附加了一些结果“多伦多公寓,Capreol Court,多伦多,加拿大,ON”  代码给出

Latitude and Longtidute:(43.640368,-79.39589699999999)

地址:17 Capreol Court,Toronto,ON,Canada

路线:Capreol Court

地点:多伦多

行政区1:开启

国家/地区:CA

地名:多伦多公寓

(介意ON&amp; 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" ]
            }
         ],

请你检查......

1 个答案:

答案 0 :(得分:1)

您使用给定链接获得的是地理编码服务的响应 但是您的代码不使用地理编码,它是places-autocomplete的实现。

响应将是Place Details Response,可能与地理编码服务返回的结果不同。