Created
October 6, 2014 09:05
-
-
Save AlexandrBasan/da1ae00b704cac2212d6 to your computer and use it in GitHub Desktop.
Javascript code for browser address check using Google API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<input id="latlng_user_geo" type="hidden" value="40.714224,-73.961452"> | |
<input id="city_user_geo" type="hidden" value="40.714224,-73.961452"> | |
<input id="state_user_geo" type="hidden" value="40.714224,-73.961452"> | |
<input id="country_user_geo" type="hidden" value="40.714224,-73.961452"> | |
<input id="route_user_geo" type="hidden" value="40.714224,-73.961452"> | |
<input id="street_user_geo" type="hidden" value="40.714224,-73.961452"> | |
<input id="complete_address_geocode_user_geo" type="text" value="40.714224,-73.961452"> | |
<button onclick="getLocation()">Check your position</button> | |
<div id="map-canvas_user_geo" style="height: 200px; | |
width: 50%; | |
margin: 0px; | |
padding: 0px; | |
/* border-radius: 100%; */ | |
background-clip: padding-box; | |
border: #fbfbfb 1px solid; | |
/* overflow: hidden; */ | |
box-shadow: 0 0 10px rgba(0,0,0,.3);"></div> | |
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script> | |
<script> | |
var x = document.getElementById("latlng_user_geo"); | |
function getLocation() { | |
if (navigator.geolocation) { | |
navigator.geolocation.getCurrentPosition(showPosition,showError); | |
} else { | |
x.innerHTML = "Geolocation is not supported by this browser."; | |
} | |
} | |
function showPosition(position) { | |
var latlon = position.coords.latitude+","+position.coords.longitude; | |
document.getElementById("latlng_user_geo").value = position.coords.latitude+","+position.coords.longitude; | |
// Google Geocode | |
codeLatLng(); | |
} | |
function showError(error) { | |
switch(error.code) { | |
case error.PERMISSION_DENIED: | |
x.innerHTML = "User denied the request for Geolocation." | |
break; | |
case error.POSITION_UNAVAILABLE: | |
x.innerHTML = "Location information is unavailable." | |
break; | |
case error.TIMEOUT: | |
x.innerHTML = "The request to get user location timed out." | |
break; | |
case error.UNKNOWN_ERROR: | |
x.innerHTML = "An unknown error occurred." | |
break; | |
} | |
} | |
</script> | |
<script> | |
var geocoder; | |
var map; | |
var infowindow = new google.maps.InfoWindow(); | |
var marker; | |
function initialize() { | |
geocoder = new google.maps.Geocoder(); | |
var latlng = new google.maps.LatLng(40.730885,-73.997383); | |
var mapOptions = { | |
zoom: 8, | |
center: latlng, | |
mapTypeId: 'roadmap' | |
} | |
map = new google.maps.Map(document.getElementById('map-canvas_user_geo'), mapOptions); | |
} | |
function codeLatLng() { | |
var input = document.getElementById('latlng_user_geo').value; | |
var latlngStr = input.split(',', 2); | |
var lat = parseFloat(latlngStr[0]); | |
var lng = parseFloat(latlngStr[1]); | |
var latlng = new google.maps.LatLng(lat, lng); | |
geocoder.geocode({'latLng': latlng}, function(results, status) { | |
if (status == google.maps.GeocoderStatus.OK) { | |
if (results[1]) { | |
map.setZoom(11); | |
marker = new google.maps.Marker({ | |
position: latlng, | |
map: map | |
}); | |
infowindow.setContent(results[1].formatted_address); | |
infowindow.open(map, marker); | |
} else { | |
alert('No results found'); | |
} | |
// Geocode Address | |
var arrAddress = results[0].address_components; | |
$.each(arrAddress, function (i, address_component) { | |
if (address_component.types[0] == "locality"){ | |
document.getElementById('city_user_geo').value = address_component.long_name; | |
} | |
if (address_component.types[0] == "administrative_area_level_1"){ | |
document.getElementById('state_user_geo').value = address_component.long_name; | |
} | |
if (address_component.types[0] == "country"){ | |
document.getElementById('country_user_geo').value = address_component.long_name; | |
} | |
if (address_component.types[0] == "route"){ | |
document.getElementById('route_user_geo').value = address_component.long_name; | |
} | |
if (address_component.types[0] == "street_number"){ | |
document.getElementById('street_user_geo').value = address_component.long_name; | |
} | |
//return false; // break the loop | |
}); | |
document.getElementById('complete_address_geocode_user_geo').value = results[0].formatted_address; | |
} else { | |
alert('Geocoder failed due to: ' + status); | |
} | |
}); | |
} | |
google.maps.event.addDomListener(window, 'load', initialize); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment