Google Places API:了解Google地方自动填充响应的解析

时间:2014-01-17 08:06:22

标签: javascript for-loop google-places-api

我正在尝试完成一个由我的同学留给我的项目,但是由于我在这个主题上缺乏经验,我倾向于陷入某些代码块中,如果我能理解的话我可以毫不费力地完成项目。我知道你可能会说,为什么不问他,我试过但是我没有回答,我的时钟正在滴答作响。

以下是我不理解的部分/代码块,如果您能向我解释,我将非常感激。

他声明了一个变量

 var component_form = {
    'street_number': 'short_name',
    'route': 'long_name',
    'locality': 'long_name',
    'administrative_area_level_1': 'short_name',
    'country': 'long_name',
    'postal_code': 'short_name'
  };  

我认为该变量适用于此功能

function fillInAddress() {
    var place = autocomplete.getPlace();

    for (var component in component_form) {
      document.getElementById(component).value = "";
      document.getElementById(component).disabled = false;
    }

    for (var j = 0; j < place.address_components.length; j++) {
      var att = place.address_components[j].types[0];
      if (component_form[att]) {
        var val = place.address_components[j][component_form[att]];
        document.getElementById(att).value = val;
      }
    }
  }

1 个答案:

答案 0 :(得分:1)

查看Google Places API的Place Details回复。 以下只是我从上面的链接复制的一个片段。 如果您查看第二个for循环并将其与循环和Place Details响应对象进行比较。

来自回复的street_number等属性被分配到component_form

中的相同变量
"html_attributions" : [],
   "result" : {
      "address_components" : [
         {
            "long_name" : "48",
            "short_name" : "48",
            "types" : [ "street_number" ]
         },
         {
            "long_name" : "Pirrama Road",
            "short_name" : "Pirrama Road",
            "types" : [ "route" ]
         },
         {
            "long_name" : "Pyrmont",
            "short_name" : "Pyrmont",
            "types" : [ "locality", "political" ]
         },

修改

当您进一步挖掘Place API时。以下是自动填充响应包含的内容

types包含适用于此地点的一系列类型。例如:[“political”,“locality”]或[“establishment”,“geocode”]。

在您的情况下,您将获取0th index数组中types的值。

  var att = place.address_components[j].types[0];

会为您提供street_number。您的代码会验证component_form中是否存在该代码。如果是,则从自动完成响应对象中指定值short_name

因此,我假设您要求自动完成参数,并在URL中使用types=street_number查询。对于下一个,您将拥有types=route(因为您始终只获得第0个索引)

希望这会有所帮助。