我怎样才能从纬度和经度中找到一座城市?

时间:2013-01-21 11:31:32

标签: php google-maps

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

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

但城市名称不正确。

我有没有办法获得正确的城市名称?

$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;

2 个答案:

答案 0 :(得分:3)

您必须循环遍历结果的所有address_components并找到类型属性设置为数组的那个:

[ "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;

?>

答案 1 :(得分: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;
?>