Google Maps API can get zip code associated with a geolocation. However if you are somewhere in middle of jungle then this API will not return anything as postal code are mapped to postal addresses. In that case you need to get zip code of nearby city.
You can use this method to do so
//Reverse GeoCode position into Address and ZipCOde
function getZipCodeFromPosition(geocoder, map,latlng,userLocationInfoWindow) {
geocoder.geocode({'location': latlng}, function(result, status) {
if (status === 'OK') {
if (result[0]) {
console.log("GeoCode Results Found:"+JSON.stringify(result));
//Display Address
document.getElementById("address").textContent = "Address: " +result[0].formatted_address;
//Update Info Window on Server Map
userLocationInfoWindow.setPosition(latlng);
userLocationInfoWindow.setContent('<IMG BORDER="0" ALIGN="Left" SRC="https://media3.giphy.com/media/IkwH4WZWgdfpu/giphy.gif" style ="width:50px; height:50px"><h6 class ="pink-text">You Are Here</h4> <p class = "purple-text" style ="margin-left:30px;">'+result[0].formatted_address+'</p>');
userLocationInfoWindow.open(map);
map.setCenter(latlng);
//Try to Get Postal Code
var postal = null;
var city = null;
var state = null;
var country = null;
for(var i=0;i<result.length;++i){
if(result[i].types[0]=="postal_code"){
postal = result[i].long_name;
}
if(result[i].types[0]=="administrative_area_level_1"){
state = result[i].long_name;
}
if(result[i].types[0]=="locality"){
city = result[i].long_name;
}
if(result[i].types[0]=="country"){
country = result[i].long_name;
}
}
if (!postal) {
geocoder.geocode({ 'location': result[0].geometry.location }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//Postal Code Not found, Try to get Postal code for City
var result=results[0].address_components;
for(var i=0;i<result.length;++i){
if(result[i].types[0]=="postal_code"){
postal = result[i].long_name;
}
}
if (!postal) {
//Postal Code Not found
document.getElementById("postal").textContent = "No Postal Code Found for this location";
}else
{
//Postal Code found
document.getElementById("postal").textContent = "Zip Code: "+postal;
}
}
});
} else
{
//Postal Code found
document.getElementById("postal").textContent = "Zip Code: "+postal;
}
console.log("STATE: " + state);
console.log("CITY: " + city);
console.log("COUNTRY: " + country);
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
</script>
Working example
https://codepen.io/hiteshsahu/pen/gxQyQE?editors=1010