我创建了一个代码来获取用户的经度和纬度,这些变量存储在 mysql 数据库中。
我正在使用下面的代码来获取经度和纬度的地址。
在 stackoverflow 中搜索后,我找到了这个脚本,但它没有给我任何错误,也没有结果。
我尝试打印变量 $ geolocation ,我的结果打印得像 33.8943186,35.505271199999996 ,但我没有完整的地址:(
任何人都可以帮我解决我的问题,并获得用户的确切地址?? !!
$geolocation = $latitude.','.$longitude;
$request ='http://maps.googleapis.com/maps/api/geocode/json?latlng='.$geolocation.'';
$file_contents = file_get_contents($request);
$json_decode = json_decode($file_contents);
if(isset($json_decode->results[0])) {
$response = array();
foreach($json_decode->results[0]->address_components as $addressComponet) {
if(in_array('political', $addressComponet->types)) {
$response[] = $addressComponet->long_name;
print_r($response); // no error
}
}
if(isset($response[0])){ $first = $response[0]; } else { $first = 'null'; }
if(isset($response[1])){ $second = $response[1]; } else { $second = 'null'; }
if(isset($response[2])){ $third = $response[2]; } else { $third = 'null'; }
if(isset($response[3])){ $fourth = $response[3]; } else { $fourth = 'null'; }
if(isset($response[4])){ $fifth = $response[4]; } else { $fifth = 'null'; }
if( $first != 'null' && $second != 'null' && $third != 'null' && $fourth != 'null' && $fifth != 'null' ) {
echo "<br/>Address:: ".$first;
echo "<br/>City:: ".$second;
echo "<br/>State:: ".$fourth;
echo "<br/>Country:: ".$fifth;
print_r($response);// No error
}
else if ( $first != 'null' && $second != 'null' && $third != 'null' && $fourth != 'null' && $fifth == 'null' ) {
echo "<br/>Address:: ".$first;
echo "<br/>City:: ".$second;
echo "<br/>State:: ".$third;
echo "<br/>Country:: ".$fourth;
}
else if ( $first != 'null' && $second != 'null' && $third != 'null' && $fourth == 'null' && $fifth == 'null' ) {
echo "<br/>City:: ".$first;
echo "<br/>State:: ".$second;
echo "<br/>Country:: ".$third;
}
else if ( $first != 'null' && $second != 'null' && $third == 'null' && $fourth == 'null' && $fifth == 'null' ) {
echo "<br/>State:: ".$first;
echo "<br/>Country:: ".$second;
}
else if ( $first != 'null' && $second == 'null' && $third == 'null' && $fourth == 'null' && $fifth == 'null' ) {
echo "<br/>Country:: ".$first;
}
}
print_r($response);// error
答案 0 :(得分:2)
$lat=52.722452;
$lng=1.099504;
$geolocation = $lat.','.$lng;
$request ='http://maps.googleapis.com/maps/api/geocode/json?latlng='.$geolocation.'';
$json = json_decode( file_get_contents( $request ) );
$results = $json->results[0];
$addr = $results->formatted_address;
$comp = $results->address_components;
$response=array();
foreach( $comp as $i => $obj ){
if( in_array( 'political', $obj->types ) ) $response[]=$obj->long_name;
}
echo $addr;
print_r( $response );
答案 1 :(得分:1)
要获得完整地址,请尝试此操作。
if (root.right is None) and (root.left is None):
return [root.val]
if root.right is not None:
rightpath = [root.val] + print_path(root.right)
if root.left is not None:
leftpath = [root.val] + print_path(root.left)
return argmax(rightpath, leftpath)
该URL将在执行时返回JSON响应。您需要将其转换为对象/数组。就我而言,它是一个对象。只需遍历数组并获取所需的密钥,在这种情况下为$latitude = 38.872292;
$longitude = -76.9698557;
$geocode=file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?latlng=38.872292,-76.9698557&sensor=false&key=YOUR_KEY_HERE');
$output= json_decode($geocode);
$formattedAddress = @$output->results[0]->formatted_address;
。
答案 2 :(得分:0)
你必须打印$response[]
!
$geolocation
只是代码中定义的long和lat
如需更多帮助,请查看Google文档here