谷歌地理定位 Json 奇怪的行为

Posted

技术标签:

【中文标题】谷歌地理定位 Json 奇怪的行为【英文标题】:Google geolocation Json weird behaviour 【发布时间】:2013-08-31 12:58:12 【问题描述】:

您好,我正在使用谷歌的自动完成搜索位置搜索框。它工作正常。但是对于我得到的 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。但非常奇怪的是,如果我直接在 Web 浏览器中键入 API 请求,它只会给我全名作为加拿大……可能是我的代码中缺少一些选项。

我附上了“加拿大安大略省多伦多 Capreol Court 多伦多公寓”的一些结果 代码给出了

经纬度:(43.640368, -79.39589699999999)

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

路线:Capreol Court

地点:多伦多

行政区 1:开启

国家:加利福尼亚

地名:多伦多公寓

(注意 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" ]
            
         ],

请检查一下...

【问题讨论】:

获得正确的数据集通常是诀窍,正确的行政级别等。 【参考方案1】:

您通过给定链接得到的是地理编码服务的响应。 但是您的代码不使用地理编码,它是场所自动完成的实现。

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

【讨论】:

以上是关于谷歌地理定位 Json 奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

使用谷歌地图地理定位 api 进行准确的地理定位

使用手机信号塔信息的谷歌地理定位 - Curl 400 Bad request PHP

谷歌地图 api 地理定位和地点搜索

如何使用谷歌地理定位 API?

使用 Ionic 进行谷歌地图和地理定位:对象不是函数

使用带有 jquery 的谷歌地图地理定位 api(wifi 查找)