Reputation: 231
I create a code to get longitude and latitude of the user and this variables are stored in mysql database.
I'm using this code below to have the address from longitude and latitude.
After a search in stackoverflow i found this script but it didn't give me anything no error and no result.
I tried to print the variable $geolocation and i have a result printed like this 33.8943186,35.505271199999996 but i don't have the full address :(
Can any body please help me to solve my problem and get the exact address of user ??!!
$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
Upvotes: 0
Views: 5255
Reputation: 4024
In order to get full address, try this.
$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;
That URL will return a JSON response when executed. You need to convert it into an object/array. In my case it is an object. Just traverse through the array and get the required key, which is formatted_address
in this case.
Upvotes: 2
Reputation: 33823
$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 );
Upvotes: 2