2017-07-26 18 views
0

PHPのXML出力から変数を読み込もうとしていますが、読みやすいですが他の変数を読み取ることはできません。私は$アドレスを得ることはできますが、lngとlatは取得できませんか?私は間違って何をしていますか?googemapsから変数を読み込むPHPのXML

XMLを取得するためのPHPコードは次のとおりです。

$xml = new SimpleXMLElement(file_get_contents("https://maps.googleapis.com/maps/api/geocode/xml?&key=&address=CV59JT&language=en-EN&sensor=false")); 
$address = $xml->result->formatted_address; 
$lat = $xml->geometry->lat; 
$lng = $xml->geometry->lng; 

そしてXML出力は次のようになります。

<?xml version="1.0" encoding="UTF-8"?> 
<GeocodeResponse> 
<status>OK</status> 
<result> 
<type>postal_code</type> 
<formatted_address>The Jordans, Coventry CV5 9JT, UK</formatted_address> 
<address_component> 
<long_name>CV5 9JT</long_name> 
<short_name>CV5 9JT</short_name> 
<type>postal_code</type> 
</address_component> 
<address_component> 
<long_name>The Jordans</long_name> 
<short_name>The Jordans</short_name> 
<type>route</type> 
</address_component> 
<address_component> 
<long_name>Coventry</long_name> 
<short_name>Coventry</short_name> 
<type>postal_town</type> 
</address_component> 
<address_component> 
<long_name>West Midlands</long_name> 
<short_name>West Midlands</short_name> 
<type>administrative_area_level_2</type> 
<type>political</type> 
</address_component> 
<address_component> 
<long_name>England</long_name> 
<short_name>England</short_name> 
<type>administrative_area_level_1</type> 
<type>political</type> 
</address_component> 
<address_component> 
<long_name>United Kingdom</long_name> 
<short_name>GB</short_name> 
<type>country</type> 
<type>political</type> 
</address_component> 
<geometry> 
<location> 
<lat>52.4141128</lat> 
<lng>-1.5580964</lng> 
</location> 
<location_type>APPROXIMATE</location_type> 
<viewport> 
<southwest> 
<lat>52.4127592</lat> 
<lng>-1.5598679</lng> 
</southwest> 
<northeast> 
<lat>52.4154571</lat> 
<lng>-1.5571700</lng> 
</northeast> 
</viewport> 
<bounds> 
<southwest> 
<lat>52.4137181</lat> 
<lng>-1.5593655</lng> 
</southwest> 
<northeast> 
<lat>52.4144982</lat> 
<lng>-1.5576724</lng> 
</northeast> 
</bounds> 
</geometry> 
<place_id>ChIJ5YQ9ljhLd0gR6sZ-dOK8tNI</place_id> 
</result> 
</GeocodeResponse> 

私は正しい方法でそれを読んでいないのですが、私はそれをどのように修正すればよい知っています?

感謝

+0

私はここに多くのlng、lat座標を見ます。あなたはどちらが必要ですか? –

答えて

0

あなたは正しく、XMLをフォーマットする場合は、次のように:

$lat = $xml->result->geometry->location->lat; // 52.4141128 
$lng = $xml->result->geometry->location->lng; // -1.5580964 

それとも

$lat = $xml->result->geometry->viewport->southwest->lat; // 52.4127592 
$lng = $xml->result->geometry->viewport->southwest->lng; // -1.5598679 

$s = '<?xml version="1.0" encoding="UTF-8"?> 
<GeocodeResponse> 
<status>OK</status> 
<result> 
    <type>postal_code</type> 
    <formatted_address>The Jordans, Coventry CV5 9JT, UK</formatted_address> 
    <address_component> 
     <long_name>CV5 9JT</long_name> 
     <short_name>CV5 9JT</short_name> 
     <type>postal_code</type> 
    </address_component> 
    <address_component> 
     <long_name>The Jordans</long_name> 
     <short_name>The Jordans</short_name> 
     <type>route</type> 
    </address_component> 
    <address_component> 
     <long_name>Coventry</long_name> 
     <short_name>Coventry</short_name> 
     <type>postal_town</type> 
    </address_component> 
    <address_component> 
     <long_name>West Midlands</long_name> 
     <short_name>West Midlands</short_name> 
     <type>administrative_area_level_2</type> 
     <type>political</type> 
    </address_component> 
    <address_component> 
     <long_name>England</long_name> 
     <short_name>England</short_name> 
     <type>administrative_area_level_1</type> 
     <type>political</type> 
    </address_component> 
    <address_component> 
     <long_name>United Kingdom</long_name> 
     <short_name>GB</short_name> 
     <type>country</type> 
     <type>political</type> 
    </address_component> 
    <geometry> 
     <location> 
      <lat>52.4141128</lat> 
      <lng>-1.5580964</lng> 
     </location> 
     <location_type>APPROXIMATE</location_type> 
     <viewport> 
      <southwest> 
       <lat>52.4127592</lat> 
       <lng>-1.5598679</lng> 
      </southwest> 
      <northeast> 
       <lat>52.4154571</lat> 
       <lng>-1.5571700</lng> 
      </northeast> 
     </viewport> 
     <bounds> 
      <southwest> 
       <lat>52.4137181</lat> 
       <lng>-1.5593655</lng> 
      </southwest> 
      <northeast> 
       <lat>52.4144982</lat> 
       <lng>-1.5576724</lng> 
      </northeast> 
     </bounds> 
    </geometry> 
    <place_id>ChIJ5YQ9ljhLd0gR6sZ-dOK8tNI</place_id> 
</result> 
</GeocodeResponse>'; 

あなたはlat/lngへのパスをすることができ表示されます

同じ手法で受け取ることができるその他の値。

+0

ありがとうございますが、私はこの結果を得ました $ lat = $ xml-> result-> geometry-> location-> lat; 52.414112852.4141128 – zak

+0

申し訳ありませんが、私のせいで2回印刷しました。ありがとうございました – zak

+0

この質問と以前の質問の両方に役立つ回答を受け入れるには、__大きなおすすめです。 –

関連する問題