onsa
1/18/2017 - 12:59 PM

Reverse address lookup with Google API (https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false)

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);