Reverse address lookup with Google API (https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false)
var latlong;
var map;
var zoom;
var mapOptions = {
zoom: zoom,
center: latlong,
mapTypeId: 'roadmap'
};
var country, postalCode, state, route, streetNumber, locality, areaLevel1, areaLevel2;
var parseResult = function(result) {
var name;
var type;
for (var i in result) {
name = result[i].long_name;
type = result[i].types[0];
if (type === 'postal_code') { postalCode = name; }
if (type === 'country') { country = name; }
if (type === 'street_number') { streetNumber = name; }
if (type === 'route') { route = name; }
if (type === 'locality') { locality = name; }
if (type === 'state') { state = name; }
if (type === 'administrative_area_level_2') { areaLevel2 = name; }
if (type === 'administrative_area_level_1') { areaLevel1 = name; }
}
};
var reverseGeocoderSuccess = function(results, status) {
parseResults(results[0]);
if (status == google.maps.GeocoderStatus.OK) {
map.setZoom(zoom);
var infowindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({
position: latlong,
map: map
});
infowindow.setContent(results[0].formatted_address);
infowindow.open(map, marker);
} else {
console.log('Geocoder failed due to: ' + status);
}
};
var parsePosition = function(position) {
latlong = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
new google.maps.Geocoder().geocode({'latLng': latlong}, reverseGeocoderSuccess);
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
navigator.geolocation.getCurrentPosition(parsePosition);