-1

我有纬度和经度,现在必须找到城市名称。

我正在使用地理代码,但没有得到正确的城市名称。

但城市名称不正确。

有什么方法可以让我获得正确的城市名称吗?

$geocode_stats = file_get_contents("maps.googleapis.com/maps/api/geocode/…" . "&sensor=true");
$output_deals  = json_decode($geocode_stats);
$city          = $output_deals->results[0]->address_components[1]->short_name;
4

2 回答 2

3

您必须遍历结果的所有 address_components 并找到将 types-property 设置为数组的那个:

[ "locality", "political" ] 

例子:

<?php

$geocode_stats = file_get_contents(/*the url*/); 
$result='no city found';
$output_deals = json_decode($geocode_stats); 
if($output_deals->status=='OK'){
  $address_components=$output_deals->results[0]->address_components;


  for($i=0;$i<count($address_components);++$i){
    if(array("locality", "political")==$address_components[$i]->types){
      $result=$address_components[$i]->short_name;
      break;
    }
  }

} else{
  $result=$status;
}
echo $result;

?>
于 2013-01-21T12:30:30.393 回答
0
<?php
$deal_lat=30.469301;
$deal_long=70.969324;
$geocode=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng='.$deal_lat.','.$deal_long.'&sensor=false');

        $output= json_decode($geocode);
enter code here
    for($j=0;$j<count($output->results[0]->address_components);$j++){
               $cn=array($output->results[0]->address_components[$j]->types[0]);
           if(in_array("locality", $cn))
           {
            $city= $output->results[0]->address_components[$j]->long_name;
           }
            }
            echo $city;
?>
于 2015-08-05T10:47:12.957 回答