通过Google Maps循环生成Javascript

通过Google Maps循环生成Javascript,javascript,google-maps,Javascript,Google Maps,因此,反向地理编码的结果如下所示: results[0].formatted_address: "275-291 Bedford Ave, Brooklyn, NY 11211, USA", results[1].formatted_address: "Williamsburg, NY, USA", results[2].formatted_address: "New York 11211, USA", results[3].formatted_address: "Kings, New York

因此,反向地理编码的结果如下所示:

results[0].formatted_address: "275-291 Bedford Ave, Brooklyn, NY 11211, USA",
results[1].formatted_address: "Williamsburg, NY, USA",
results[2].formatted_address: "New York 11211, USA",
results[3].formatted_address: "Kings, New York, USA",
results[4].formatted_address: "Brooklyn, New York, USA",
results[5].formatted_address: "New York, New York, USA",
results[6].formatted_address: "New York, USA",
results[7].formatted_address: "United States"
这是一个地址数组,一个比另一个更不详细。我需要循环浏览这个列表,得到只包含城市/州的地址。我该怎么做

它并不总是一个特定的元素(感谢谷歌)。

//存储最特定的地址以便于访问
var a=结果[0]。地址\u组件;
var city=null,state=null;
对于(i=0;i
基本上,所发生的是在地址组件中循环,每个组件都有与之相关联的“类型”。您可以使用这些来确定该组件表示的内容。几乎100%的时间(在美国)
的“行政区域”一级是州,而
的“地方”一级是城市。更多信息:

我为我糟糕的变量命名道歉,如果您有任何问题,请告诉我。

//存储最具体的地址以便于访问
var a=结果[0]。地址\u组件;
var city=null,state=null;
对于(i=0;i
基本上,所发生的是在地址组件中循环,每个组件都有与之相关联的“类型”。您可以使用这些来确定该组件表示的内容。几乎100%的时间(在美国)
的“行政区域”一级是州,而
的“地方”一级是城市。更多信息:


我为我糟糕的变量命名表示歉意,如果您有任何问题,请告诉我。

我最近做了这件事,请让我找到它。我想有人必须这样做。谢谢查德。我最近做了这个,让我来找。我想一定有人会的。感谢Chad。这在大多数情况下都是有效的,但是我们得到了一个特定的lat/long位置,一个未定义的城市,但却是正确的州。是否存在这种情况,以及解决方法?从地理编码返回的结果对象并不总是包含所有部分。这段代码没有问题,只是地理编码员没有找到这些信息。是的,我看到次局部性是另一个问题。因此,我想我会修改你的方法,如果找不到地点,则使用该方法。这在大多数情况下都有效,但是对于一个特定的lat/long地点,我们得到了一个未定义的城市,但状态正确。是否存在这种情况,以及解决方法?从地理编码返回的结果对象并不总是包含所有部分。这段代码没有问题,只是地理编码员没有找到这些信息。是的,我看到次局部性是另一个问题。所以我想我会修改你的方法,如果它找不到局部性的话
//store the most specific address for easy access
var a = results[0].address_components;

var city = null, state = null;
for(i = 0; i < a.length; ++i)
{
   var t = a[i].types;
   if(compIsType(t, 'administrative_area_level_1'))
      state = a[i].long_name; //store the state
   else if(compIsType(t, 'locality'))
      city = a[i].long_name; //store the city

   //we can break early if we find both
   if(state != null && city != null) break;
}

function compIsType(t, s) { 
   for(z = 0; z < t.length; ++z) 
      if(t[z] == s)
         return true;

   return false;
}