- Posts: 10
- Thank you received: 2
Ask the community, share ideas, and connect with other LimeSurvey users!
"results" : [ { "address_components" : [ { "long_name" : "1", "short_name" : "1", "types" : [ "street_number" ] }, { "long_name" : "Pariser Platz", "short_name" : "Pariser Platz", "types" : [ "route" ] }, { "long_name" : "Mitte", "short_name" : "Mitte", "types" : [ "political", "sublocality", "sublocality_level_1" ] }, { "long_name" : "Berlin", "short_name" : "Berlin", "types" : [ "locality", "political" ] }, { "long_name" : "Berlin", "short_name" : "Berlin", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "Deutschland", "short_name" : "DE", "types" : [ "country", "political" ] }, { "long_name" : "10117", "short_name" : "10117", "types" : [ "postal_code" ] }
<script charset="utf-8" type="text/javascript"> $(document).ready(function() { var mapQ = $('#question{QID}'); var mapInput = $('input.text.location', mapQ); var mapSGQA = mapInput.attr('id').replace(/answer/, '').replace(/_c/, ''); var map = gmaps[mapSGQA+'_c']; var marker = gmaps['marker__'+mapSGQA+'_c']; var addressQ = mapQ.prevAll('.text-short:eq(0)'); var addressInput = $('input.text', addressQ); // Add a "Search" button addressInput.after('<br><button class="geocode" type="button">Get geocoordinates</button>'); // Wait for the maps to load google.maps.event.addListenerOnce(map, 'idle', function(){ // Initialize geocoder var geocoder = new google.maps.Geocoder(); // Geocode look-up function function codeAddress() { var address = addressInput.val(); geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { // Just confirming the address found by geocoding is appropriate // if(window.confirm("Address found: " + results[0].formatted_address+". Is it correct?")) { // Record the formatted address into the address field // addressInput.val(results[0].formatted_address); // capture geolocation var geoCoord = results[0].geometry.location; // capture admin boundaries var level_1 = "", level_2 = ""; results[0].address_components.forEach(function(component){ if(component.types.includes("administrative_area_level_1")){ level_1 = component.long_name; } if(component.types.includes("administrative_area_level_2")){ level_2 = component.long_name; } if(component.types.includes("sublocality_level_1")){ level_3 = component.long_name; } }); var lat = Math.round(geoCoord.lat()*10000)/10000; var long = Math.round(geoCoord.lng()*10000)/10000; // Move the map and marker map.setCenter(geoCoord); marker.setPosition(geoCoord); // Record the new position & administrative boundaries mapInput.val(lat+ ";" + long + ";" + level_1 + ";" + level_2 + ";" + level_3); // $('#answer{SGQ}').val(lat + ';' + long + ";" + level_1 + ";" + level_2); } } else { alert("An error occurred. Error status: " + status); } }); } $('button.geocode').click(function(e) { codeAddress(); }); });}); </script>