Get City by Zip Code
https://www.codeofaninja.com/2014/06/google-maps-geocoding-example-php.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Live Demo of Google Maps Geocoding Example with PHP</title>
<style>
body{
font-family:arial;
font-size:.8em;
}
input[type=text]{
padding:0.5em;
width:20em;
}
input[type=submit]{
padding:0.4em;
}
#gmap_canvas{
width:100%;
height:30em;
}
#map-label,
#address-examples{
margin:1em 0;
}
</style>
</head>
<body>
<?php
if($_POST){
// get latitude, longitude and formatted address
$data_arr = geocode($_POST['address']);
// if able to geocode the address
if($data_arr){
$latitude = $data_arr[0];
$longitude = $data_arr[1];
$formatted_address = $data_arr[2];
$zipcode = $data_arr[3];
?>
<!-- google map will be shown here -->
<div id="gmap_canvas">Loading map...</div>
<div id='map-label'>Map shows approximate location.</div>
<!-- JavaScript to show google map -->
<script type="text/javascript" src="http://maps.google.com/maps/api/js"></script>
<script type="text/javascript">
function init_map() {
var myOptions = {
zoom: 14,
center: new google.maps.LatLng(<?php echo $latitude; ?>, <?php echo $longitude; ?>),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("gmap_canvas"), myOptions);
marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(<?php echo $latitude; ?>, <?php echo $longitude; ?>)
});
infowindow = new google.maps.InfoWindow({
content: "<?php echo $formatted_address; ?>"
});
google.maps.event.addListener(marker, "click", function () {
infowindow.open(map, marker);
});
infowindow.open(map, marker);
}
google.maps.event.addDomListener(window, 'load', init_map);
</script>
<?php
// if unable to geocode the address
}else{
echo "No map found.";
}
}
?>
<!-- enter any address -->
<form action="" method="post">
<input type='text' name='address' placeholder='Enter any address here' />
<input type='submit' value='Geocode!' />
</form>
<?php
if (isset($latitude) ) echo "Latitude: $latitude<br>";
if (isset($longitude) ) echo "Longitude: $longitude<br>" ;
if (isset($formatted_address) ) echo "Your Address: $formatted_address<br>";
if (isset($zipcode) ) echo "Zip Code: $zipcode<br>";
?>
<?php
// function to geocode address, it will return false if unable to geocode address
function geocode($address){
// url encode the address
$address = urlencode($address);
/*
$geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$address);
$output= json_decode($geocode);
$latitude = $output->results[0]->geometry->location->lat;
$longitude = $output->results[0]->geometry->location->lng;
$city = $output->results[0]->address_components[1]->long_name;
echo $latitude . ', ' . $longitude . ', ' . $city ;
echo '<hr>';
echo '<pre>';
print_r($output) ;
echo '</pre>';
exit;
*/
// google map geocode api url
$url = "http://maps.google.com/maps/api/geocode/json?address={$address}";
// get the json response
$resp_json = file_get_contents($url);
// decode the json
$resp = json_decode($resp_json, true);
// response status will be 'OK', if able to geocode given address
if( $resp['status']=='OK' ) {
// get the important data
$lati = $resp['results'][0]['geometry']['location']['lat'];
$longi = $resp['results'][0]['geometry']['location']['lng'];
$formatted_address = $resp['results'][0]['formatted_address'];
$zipcode = $resp['results'][0]['address_components'][1]['long_name'] ;
// verify if data is complete
if($lati && $longi && $formatted_address){
// put the data in the array
$data_arr = array();
array_push(
$data_arr,
$lati,
$longi,
$formatted_address,
$zipcode
);
return $data_arr;
}
else{
return false;
}
}
else{
return false;
}
}
?>
</body>
</html>