【问题标题】:how to parse a Google Maps geocoding result如何解析谷歌地图地理编码结果
【发布时间】:2011-08-12 22:57:08
【问题描述】:

我想使用地理编码从给定的纬度和经度中检索地理地址, 使用网站上的给定示例

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true

在这个例子中,我只需要城市名称纽约和国家名称,即美国。但问题是出现不止一种 这些词作为long_name。

我的问题是如何在 php 中解析这个 json/xml 以获得城市名称和国家/地区。

$url= file_get_contents('http://maps.googleapis.com/maps/api/geocode/xml?latlng=40.714‌​224,-73.961452&sensor=true'); 
$xml = simplexml_load_string($url); 
$tracks = $xml->result; 
$temp; $city; $country; 
foreach($tracks as $key) 
{ 
    foreach($key->address_component as $val) 
    { 
        $temp= $val->long_name; 
        if($val->type=="locality") 
        { 
          $city=$temp; 
        }else if($val->type=="country") 
       { 
         $country=$temp; 
       }  
    }  
  } 
  echo $country."<br />"; echo $city;

<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
 <status>OK</status>
 <result>
  <type>street_address</type>
  <formatted_address>277 Bedford Avenue, Brooklyn, New York 11211, USA</formatted_address>
  <address_component>
   <long_name>277</long_name>
   <short_name>277</short_name>
   <type>street_number</type>
  </address_component>
  <address_component>
   <long_name>Bedford Avenue</long_name>
   <short_name>Bedford Ave</short_name>
   <type>route</type>
  </address_component>
  <address_component>
   <long_name>Williamsburg</long_name>
   <short_name>Williamsburg</short_name>
   <type>neighborhood</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Brooklyn</long_name>
   <short_name>Brooklyn</short_name>
   <type>sublocality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Kings</long_name>
   <short_name>Kings</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>11211</long_name>
   <short_name>11211</short_name>
   <type>postal_code</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.7142320</lat>
    <lng>-73.9612889</lng>
   </location>
   <location_type>ROOFTOP</location_type>
   <viewport>
    <southwest>
     <lat>40.7128830</lat>
     <lng>-73.9626379</lng>
    </southwest>
    <northeast>
     <lat>40.7155810</lat>
     <lng>-73.9599399</lng>
    </northeast>
   </viewport>
  </geometry>
 </result>
 <result>
  <type>bus_station</type>
  <type>transit_station</type>
  <type>establishment</type>
  <formatted_address>Grand St/Bedford Av, Brooklyn, New York 11211, USA</formatted_address>
  <address_component>
   <long_name>Grand St/Bedford Av</long_name>
   <short_name>Grand St/Bedford Av</short_name>
   <type>bus_station</type>
   <type>transit_station</type>
   <type>establishment</type>
  </address_component>
  <address_component>
   <long_name>Williamsburg</long_name>
   <short_name>Williamsburg</short_name>
   <type>neighborhood</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Brooklyn</long_name>
   <short_name>Brooklyn</short_name>
   <type>sublocality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Kings</long_name>
   <short_name>Kings</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>11211</long_name>
   <short_name>11211</short_name>
   <type>postal_code</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.7143210</lat>
    <lng>-73.9611510</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.7129720</lat>
     <lng>-73.9625000</lng>
    </southwest>
    <northeast>
     <lat>40.7156700</lat>
     <lng>-73.9598020</lng>
    </northeast>
   </viewport>
  </geometry>
 </result>
 <result>
  <type>bus_station</type>
  <type>transit_station</type>
  <type>establishment</type>
  <formatted_address>Grand St/Bedford Av, Brooklyn, New York 11249, USA</formatted_address>
  <address_component>
   <long_name>Grand St/Bedford Av</long_name>
   <short_name>Grand St/Bedford Av</short_name>
   <type>bus_station</type>
   <type>transit_station</type>
   <type>establishment</type>
  </address_component>
  <address_component>
   <long_name>Williamsburg</long_name>
   <short_name>Williamsburg</short_name>
   <type>neighborhood</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Brooklyn</long_name>
   <short_name>Brooklyn</short_name>
   <type>sublocality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Kings</long_name>
   <short_name>Kings</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>11249</long_name>
   <short_name>11249</short_name>
   <type>postal_code</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.7146840</lat>
    <lng>-73.9615630</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.7133350</lat>
     <lng>-73.9629120</lng>
    </southwest>
    <northeast>
     <lat>40.7160330</lat>
     <lng>-73.9602140</lng>
    </northeast>
   </viewport>
  </geometry>
 </result>
 <result>
  <type>bus_station</type>
  <type>transit_station</type>
  <type>establishment</type>
  <formatted_address>Bedford Av/Grand St, Brooklyn, New York 11211, USA</formatted_address>
  <address_component>
   <long_name>Bedford Av/Grand St</long_name>
   <short_name>Bedford Av/Grand St</short_name>
   <type>bus_station</type>
   <type>transit_station</type>
   <type>establishment</type>
  </address_component>
  <address_component>
   <long_name>Williamsburg</long_name>
   <short_name>Williamsburg</short_name>
   <type>neighborhood</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Brooklyn</long_name>
   <short_name>Brooklyn</short_name>
   <type>sublocality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Kings</long_name>
   <short_name>Kings</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>11211</long_name>
   <short_name>11211</short_name>
   <type>postal_code</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.7147100</lat>
    <lng>-73.9609990</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.7133610</lat>
     <lng>-73.9623480</lng>
    </southwest>
    <northeast>
     <lat>40.7160590</lat>
     <lng>-73.9596500</lng>
    </northeast>
   </viewport>
  </geometry>
 </result>
 <result>
  <type>postal_code</type>
  <formatted_address>Brooklyn, New York 11211, USA</formatted_address>
  <address_component>
   <long_name>11211</long_name>
   <short_name>11211</short_name>
   <type>postal_code</type>
  </address_component>
  <address_component>
   <long_name>Brooklyn</long_name>
   <short_name>Brooklyn</short_name>
   <type>sublocality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York City</long_name>
   <short_name>New York City</short_name>
   <type>locality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.7093358</lat>
    <lng>-73.9565551</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.7008331</lat>
     <lng>-73.9644697</lng>
    </southwest>
    <northeast>
     <lat>40.7280089</lat>
     <lng>-73.9207299</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>40.7008331</lat>
     <lng>-73.9644697</lng>
    </southwest>
    <northeast>
     <lat>40.7280089</lat>
     <lng>-73.9207299</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
 <result>
  <type>neighborhood</type>
  <type>political</type>
  <formatted_address>Williamsburg, Brooklyn, New York, USA</formatted_address>
  <address_component>
   <long_name>Williamsburg</long_name>
   <short_name>Williamsburg</short_name>
   <type>neighborhood</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Brooklyn</long_name>
   <short_name>Brooklyn</short_name>
   <type>sublocality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York City</long_name>
   <short_name>New York City</short_name>
   <type>locality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Kings</long_name>
   <short_name>Kings</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.7064461</lat>
    <lng>-73.9536163</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.6979329</lat>
     <lng>-73.9698450</lng>
    </southwest>
    <northeast>
     <lat>40.7251773</lat>
     <lng>-73.9364980</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>40.6979329</lat>
     <lng>-73.9698450</lng>
    </southwest>
    <northeast>
     <lat>40.7251773</lat>
     <lng>-73.9364980</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
 <result>
  <type>administrative_area_level_2</type>
  <type>political</type>
  <formatted_address>Kings, New York, USA</formatted_address>
  <address_component>
   <long_name>Kings</long_name>
   <short_name>Kings</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.6528762</lat>
    <lng>-73.9594940</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.5695637</lat>
     <lng>-74.0429503</lng>
    </southwest>
    <northeast>
     <lat>40.7394460</lat>
     <lng>-73.8333651</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>40.5695637</lat>
     <lng>-74.0429503</lng>
    </southwest>
    <northeast>
     <lat>40.7394460</lat>
     <lng>-73.8333651</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
 <result>
  <type>sublocality</type>
  <type>political</type>
  <formatted_address>Brooklyn, New York, USA</formatted_address>
  <address_component>
   <long_name>Brooklyn</long_name>
   <short_name>Brooklyn</short_name>
   <type>sublocality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York City</long_name>
   <short_name>New York City</short_name>
   <type>locality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Kings</long_name>
   <short_name>Kings</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.6500000</lat>
    <lng>-73.9500000</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.5510420</lat>
     <lng>-74.0566300</lng>
    </southwest>
    <northeast>
     <lat>40.7394460</lat>
     <lng>-73.8333651</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>40.5510420</lat>
     <lng>-74.0566300</lng>
    </southwest>
    <northeast>
     <lat>40.7394460</lat>
     <lng>-73.8333651</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
 <result>
  <type>locality</type>
  <type>political</type>
  <formatted_address>New York City, New York, USA</formatted_address>
  <address_component>
   <long_name>New York City</long_name>
   <short_name>New York City</short_name>
   <type>locality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.7143528</lat>
    <lng>-74.0059731</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.4960060</lat>
     <lng>-74.2557349</lng>
    </southwest>
    <northeast>
     <lat>40.9152556</lat>
     <lng>-73.7002721</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>40.4959961</lat>
     <lng>-74.2590879</lng>
    </southwest>
    <northeast>
     <lat>40.9152556</lat>
     <lng>-73.7002721</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
 <result>
  <type>political</type>
  <formatted_address>USA, ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド</formatted_address>
  <address_component>
   <long_name>ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド</long_name>
   <short_name>ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド</short_name>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>40.9590293</lat>
    <lng>-74.0300122</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>39.4985330</lat>
     <lng>-75.3585939</lng>
    </southwest>
    <northeast>
     <lat>41.6018065</lat>
     <lng>-71.8562140</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>39.4985330</lat>
     <lng>-75.3585939</lng>
    </southwest>
    <northeast>
     <lat>41.6018065</lat>
     <lng>-71.8562140</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
 <result>
  <type>administrative_area_level_1</type>
  <type>political</type>
  <formatted_address>New York, USA</formatted_address>
  <address_component>
   <long_name>New York</long_name>
   <short_name>NY</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>43.2994285</lat>
    <lng>-74.2179326</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>40.4960191</lat>
     <lng>-79.7621438</lng>
    </southwest>
    <northeast>
     <lat>45.0156269</lat>
     <lng>-71.8562643</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>40.4959961</lat>
     <lng>-79.7621438</lng>
    </southwest>
    <northeast>
     <lat>45.0158650</lat>
     <lng>-71.8562643</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
 <result>
  <type>country</type>
  <type>political</type>
  <formatted_address>USA</formatted_address>
  <address_component>
   <long_name>USA</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>37.0902400</lat>
    <lng>-95.7128910</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>25.8200000</lat>
     <lng>-124.3900000</lng>
    </southwest>
    <northeast>
     <lat>49.3800000</lat>
     <lng>-66.9400000</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>-90.0000000</lat>
     <lng>-180.0000000</lng>
    </southwest>
    <northeast>
     <lat>90.0000000</lat>
     <lng>180.0000000</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
</GeocodeResponse>

【问题讨论】:

    标签: php json google-maps geolocation google-maps-api-3


    【解决方案1】:

    我有一个适用于 Google Geocode JSON 结果的简单解决方案。这是一个简单的 for 循环,它在字符串数组中返回该短版本和长版本。只需调用函数并在参数中提供“类型”。

    string[] street_number = GetJSONValueBasedOnType(record.geocode, "street_number");

        public string[] GetJSONValueBasedOnType(NewGoogleGeocode gc, string WhatYouWant)
    {
        string[] returns = new string[2];
        returns[0] = string.Empty;
        returns[1] = string.Empty;
        bool isInIt;
    
        foreach (var v in gc.results[0].address_components)
        {
            isInIt = false;
            foreach (var t in v.types)
            {
                if (t == WhatYouWant)
                {
                    isInIt = true;
                }
            }
            if (isInIt)
            {
                returns[0] = v.short_name;
                returns[1] = v.long_name;
            }
        }
        return returns;
    }
    

    【讨论】:

      【解决方案2】:

      您可以检查 google 响应 (json) 中的 3 个变量以查找当前城市名称。因此,该名称有 3 种不同的解释:

      Country
           |
      AdministrativeArea
           |
           |_AdministrativeAreaName (cityname)
           |
           |_Locality_LocalityName (cityname)
           | 
           |_SubAdministrativeArea
                       |
                       |_Locality_LocalityName (cityname)
      
      
      
      if ($this->json->Placemark[0]->AddressDetails->Country->AdministrativeArea->Locality->LocalityName != NULL) {
      
        $code['cityname'] = $this->json->Placemark[0]->AddressDetails->Country->AdministrativeArea->Locality->LocalityName;
      
      } elseif ($this->json->Placemark[0]->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->Locality->LocalityName != NULL) {
      
        $code['cityname'] = $this->json->Placemark[0]->AddressDetails->Country->AdministrativeArea->SubAdministrativeArea->Locality->LocalityName;
      
      } 
      

      如果您有更多的地标,则需要遍历所有数组。

         "results" : [
            {
               "address_components" : [
                  {
                     "long_name" : "277",
                     "short_name" : "277",
                     "types" : [ "street_number" ]
                  },
                  {
                     "long_name" : "Bedford Avenue",
                     "short_name" : "Bedford Ave",
                     "types" : [ "route" ]
                  },
                  {
                     "long_name" : "Williamsburg",
                     "short_name" : "Williamsburg",
                     "types" : [ "neighborhood", "political" ]
                  },
                  {
                     "long_name" : "Brooklyn",
                     "short_name" : "Brooklyn",
                     "types" : [ "sublocality", "political" ]
                  },
                  {
                     "long_name" : "Kings",
                     "short_name" : "Kings",
                     "types" : [ "administrative_area_level_2", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  },
                  {
                     "long_name" : "11211",
                     "short_name" : "11211",
                     "types" : [ "postal_code" ]
                  }
               ],
               "formatted_address" : "277 Bedford Avenue, Brooklyn, New York 11211, USA",
               "geometry" : {
                  "location" : {
                     "lat" : 40.714232,
                     "lng" : -73.9612889
                  },
                  "location_type" : "ROOFTOP",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.7155809802915,
                        "lng" : -73.9599399197085
                     },
                     "southwest" : {
                        "lat" : 40.7128830197085,
                        "lng" : -73.96263788029151
                     }
                  }
               },
               "types" : [ "street_address" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "Grand St/Bedford Av",
                     "short_name" : "Grand St/Bedford Av",
                     "types" : [ "bus_station", "transit_station", "establishment" ]
                  },
                  {
                     "long_name" : "Williamsburg",
                     "short_name" : "Williamsburg",
                     "types" : [ "neighborhood", "political" ]
                  },
                  {
                     "long_name" : "Brooklyn",
                     "short_name" : "Brooklyn",
                     "types" : [ "sublocality", "political" ]
                  },
                  {
                     "long_name" : "Kings",
                     "short_name" : "Kings",
                     "types" : [ "administrative_area_level_2", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  },
                  {
                     "long_name" : "11211",
                     "short_name" : "11211",
                     "types" : [ "postal_code" ]
                  }
               ],
               "formatted_address" : "Grand St/Bedford Av, Brooklyn, New York 11211, USA",
               "geometry" : {
                  "location" : {
                     "lat" : 40.714321,
                     "lng" : -73.961151
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.71566998029149,
                        "lng" : -73.95980201970849
                     },
                     "southwest" : {
                        "lat" : 40.7129720197085,
                        "lng" : -73.96249998029151
                     }
                  }
               },
               "types" : [ "bus_station", "transit_station", "establishment" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "Grand St/Bedford Av",
                     "short_name" : "Grand St/Bedford Av",
                     "types" : [ "bus_station", "transit_station", "establishment" ]
                  },
                  {
                     "long_name" : "Williamsburg",
                     "short_name" : "Williamsburg",
                     "types" : [ "neighborhood", "political" ]
                  },
                  {
                     "long_name" : "Brooklyn",
                     "short_name" : "Brooklyn",
                     "types" : [ "sublocality", "political" ]
                  },
                  {
                     "long_name" : "Kings",
                     "short_name" : "Kings",
                     "types" : [ "administrative_area_level_2", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  },
                  {
                     "long_name" : "11249",
                     "short_name" : "11249",
                     "types" : [ "postal_code" ]
                  }
               ],
               "formatted_address" : "Grand St/Bedford Av, Brooklyn, New York 11249, USA",
               "geometry" : {
                  "location" : {
                     "lat" : 40.714684,
                     "lng" : -73.961563
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.71603298029149,
                        "lng" : -73.9602140197085
                     },
                     "southwest" : {
                        "lat" : 40.7133350197085,
                        "lng" : -73.96291198029151
                     }
                  }
               },
               "types" : [ "bus_station", "transit_station", "establishment" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "Bedford Av/Grand St",
                     "short_name" : "Bedford Av/Grand St",
                     "types" : [ "bus_station", "transit_station", "establishment" ]
                  },
                  {
                     "long_name" : "Williamsburg",
                     "short_name" : "Williamsburg",
                     "types" : [ "neighborhood", "political" ]
                  },
                  {
                     "long_name" : "Brooklyn",
                     "short_name" : "Brooklyn",
                     "types" : [ "sublocality", "political" ]
                  },
                  {
                     "long_name" : "Kings",
                     "short_name" : "Kings",
                     "types" : [ "administrative_area_level_2", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  },
                  {
                     "long_name" : "11211",
                     "short_name" : "11211",
                     "types" : [ "postal_code" ]
                  }
               ],
               "formatted_address" : "Bedford Av/Grand St, Brooklyn, New York 11211, USA",
               "geometry" : {
                  "location" : {
                     "lat" : 40.71471,
                     "lng" : -73.960999
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.7160589802915,
                        "lng" : -73.95965001970849
                     },
                     "southwest" : {
                        "lat" : 40.7133610197085,
                        "lng" : -73.9623479802915
                     }
                  }
               },
               "types" : [ "bus_station", "transit_station", "establishment" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "11211",
                     "short_name" : "11211",
                     "types" : [ "postal_code" ]
                  },
                  {
                     "long_name" : "Brooklyn",
                     "short_name" : "Brooklyn",
                     "types" : [ "sublocality", "political" ]
                  },
                  {
                     "long_name" : "New York City",
                     "short_name" : "New York City",
                     "types" : [ "locality", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  }
               ],
               "formatted_address" : "Brooklyn, New York 11211, USA",
               "geometry" : {
                  "bounds" : {
                     "northeast" : {
                        "lat" : 40.7280089,
                        "lng" : -73.9207299
                     },
                     "southwest" : {
                        "lat" : 40.7008331,
                        "lng" : -73.9644697
                     }
                  },
                  "location" : {
                     "lat" : 40.7093358,
                     "lng" : -73.9565551
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.7280089,
                        "lng" : -73.9207299
                     },
                     "southwest" : {
                        "lat" : 40.7008331,
                        "lng" : -73.9644697
                     }
                  }
               },
               "types" : [ "postal_code" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "Williamsburg",
                     "short_name" : "Williamsburg",
                     "types" : [ "neighborhood", "political" ]
                  },
                  {
                     "long_name" : "Brooklyn",
                     "short_name" : "Brooklyn",
                     "types" : [ "sublocality", "political" ]
                  },
                  {
                     "long_name" : "New York City",
                     "short_name" : "New York City",
                     "types" : [ "locality", "political" ]
                  },
                  {
                     "long_name" : "Kings",
                     "short_name" : "Kings",
                     "types" : [ "administrative_area_level_2", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  }
               ],
               "formatted_address" : "Williamsburg, Brooklyn, New York, USA",
               "geometry" : {
                  "bounds" : {
                     "northeast" : {
                        "lat" : 40.7251773,
                        "lng" : -73.936498
                     },
                     "southwest" : {
                        "lat" : 40.6979329,
                        "lng" : -73.96984499999999
                     }
                  },
                  "location" : {
                     "lat" : 40.7064461,
                     "lng" : -73.95361629999999
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.7251773,
                        "lng" : -73.936498
                     },
                     "southwest" : {
                        "lat" : 40.6979329,
                        "lng" : -73.96984499999999
                     }
                  }
               },
               "types" : [ "neighborhood", "political" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "Kings",
                     "short_name" : "Kings",
                     "types" : [ "administrative_area_level_2", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  }
               ],
               "formatted_address" : "Kings, New York, USA",
               "geometry" : {
                  "bounds" : {
                     "northeast" : {
                        "lat" : 40.739446,
                        "lng" : -73.83336509999999
                     },
                     "southwest" : {
                        "lat" : 40.5695637,
                        "lng" : -74.0429503
                     }
                  },
                  "location" : {
                     "lat" : 40.6528762,
                     "lng" : -73.95949399999999
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.739446,
                        "lng" : -73.83336509999999
                     },
                     "southwest" : {
                        "lat" : 40.5695637,
                        "lng" : -74.0429503
                     }
                  }
               },
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "Brooklyn",
                     "short_name" : "Brooklyn",
                     "types" : [ "sublocality", "political" ]
                  },
                  {
                     "long_name" : "New York City",
                     "short_name" : "New York City",
                     "types" : [ "locality", "political" ]
                  },
                  {
                     "long_name" : "Kings",
                     "short_name" : "Kings",
                     "types" : [ "administrative_area_level_2", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  }
               ],
               "formatted_address" : "Brooklyn, New York, USA",
               "geometry" : {
                  "bounds" : {
                     "northeast" : {
                        "lat" : 40.739446,
                        "lng" : -73.83336509999999
                     },
                     "southwest" : {
                        "lat" : 40.551042,
                        "lng" : -74.05663
                     }
                  },
                  "location" : {
                     "lat" : 40.65,
                     "lng" : -73.95
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.739446,
                        "lng" : -73.83336509999999
                     },
                     "southwest" : {
                        "lat" : 40.551042,
                        "lng" : -74.05663
                     }
                  }
               },
               "types" : [ "sublocality", "political" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "New York City",
                     "short_name" : "New York City",
                     "types" : [ "locality", "political" ]
                  },
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  }
               ],
               "formatted_address" : "New York City, New York, USA",
               "geometry" : {
                  "bounds" : {
                     "northeast" : {
                        "lat" : 40.91525559999999,
                        "lng" : -73.70027209999999
                     },
                     "southwest" : {
                        "lat" : 40.4959961,
                        "lng" : -74.2590879
                     }
                  },
                  "location" : {
                     "lat" : 40.7143528,
                     "lng" : -74.00597309999999
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 40.91525559999999,
                        "lng" : -73.70027209999999
                     },
                     "southwest" : {
                        "lat" : 40.496006,
                        "lng" : -74.25573489999999
                     }
                  }
               },
               "types" : [ "locality", "political" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド",
                     "short_name" : "ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド",
                     "types" : [ "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  }
               ],
               "formatted_address" : "USA, ニュー・ヨーク=ノーザン・ニュー・ジャージー=ロング・アイランド",
               "geometry" : {
                  "bounds" : {
                     "northeast" : {
                        "lat" : 41.6018065,
                        "lng" : -71.85621399999999
                     },
                     "southwest" : {
                        "lat" : 39.49853299999999,
                        "lng" : -75.3585939
                     }
                  },
                  "location" : {
                     "lat" : 40.9590293,
                     "lng" : -74.0300122
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 41.6018065,
                        "lng" : -71.85621399999999
                     },
                     "southwest" : {
                        "lat" : 39.49853299999999,
                        "lng" : -75.3585939
                     }
                  }
               },
               "types" : [ "political" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "New York",
                     "short_name" : "NY",
                     "types" : [ "administrative_area_level_1", "political" ]
                  },
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  }
               ],
               "formatted_address" : "New York, USA",
               "geometry" : {
                  "bounds" : {
                     "northeast" : {
                        "lat" : 45.015865,
                        "lng" : -71.85626429999999
                     },
                     "southwest" : {
                        "lat" : 40.4959961,
                        "lng" : -79.76214379999999
                     }
                  },
                  "location" : {
                     "lat" : 43.2994285,
                     "lng" : -74.21793260000001
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 45.0156269,
                        "lng" : -71.85626429999999
                     },
                     "southwest" : {
                        "lat" : 40.4960191,
                        "lng" : -79.76214379999999
                     }
                  }
               },
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "address_components" : [
                  {
                     "long_name" : "USA",
                     "short_name" : "US",
                     "types" : [ "country", "political" ]
                  }
               ],
               "formatted_address" : "USA",
               "geometry" : {
                  "bounds" : {
                     "northeast" : {
                        "lat" : 90,
                        "lng" : 180
                     },
                     "southwest" : {
                        "lat" : -90,
                        "lng" : -180
                     }
                  },
                  "location" : {
                     "lat" : 37.09024,
                     "lng" : -95.712891
                  },
                  "location_type" : "APPROXIMATE",
                  "viewport" : {
                     "northeast" : {
                        "lat" : 49.38,
                        "lng" : -66.94
                     },
                     "southwest" : {
                        "lat" : 25.82,
                        "lng" : -124.39
                     }
                  }
               },
               "types" : [ "country", "political" ]
            }
         ],
         "status" : "OK"
      }
      

      【讨论】:

      • 谢谢你的回复,我已经用我自己的简单逻辑来解决这个问题并在这里分享以寻求帮助$url= file_get_contents('http://maps.googleapis.com/maps/api/geocode/xml?latlng=40.714224,-73.961452&amp;sensor=true'); $xml = simplexml_load_string($url); $tracks = $xml-&gt;result; $temp; $city; $country; foreach($tracks as $key) { foreach($key-&gt;address_component as $val){ $temp= $val-&gt;long_name; if($val-&gt;type=="locality") { $city=$temp; }else if($val-&gt;type=="country") { $country=$temp; } }} echo $country."&lt;br /&gt;"; echo $city;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 2015-10-21
      • 1970-01-01
      • 2011-09-28
      • 2014-04-06
      • 2012-04-10
      • 1970-01-01
      相关资源
      最近更新 更多