Revision: 23988
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 18, 2010 04:15 by bitmanic
Initial Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Geolocation - Let user choose which result is correct, or auto-assign if only one result is returned.</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="http://github.com/brandonaaron/livequery/raw/master/jquery.livequery.js"></script>
<script type="text/javascript">
/* <![CDATA[ */
$(document).ready(function(){
// Hide the result container by default
$('div#td_msg').hide();
// Helper function that assigns a value to the target text input box
function assignValue(value){
var target = $('input#target');
target.val(value);
$('div#td_msg').hide('slow');
}
// Geocode the address whenever the input box's value changes
$('input#target').change(function() {
var dataString = "q=" + $("#target").val().split(" ").join("+") + "&output=json&oe=utf8\&sensor=false&key=ABQIAAAAy9tS-IF2ap3XUdcLPuPSOxQ01e10W64RY7l9Y_lnlyOXiCMlVhTg2tCthvKLlTm5gfHxLY-HjIRkeQ";
var url = "http://maps.google.com/maps/geo?" + dataString;
$.getJSON(url + "&callback=?", function(jsonData){
if(jsonData.Placemark.length == 1){ // ....................................... If there's only one result,
assignValue(jsonData.Placemark[0].address); // ....................................... assign it to the input box.
} else { // ....................................... Otherwise,
$('div#td_msg').html('<ul id="results"></ul>'); // ....................................... create a list for the multiple results.
$.each(jsonData.Placemark, function(i,result){ // ....................................... For each placemark in the JSON array, we pass its index (i) and value (result),
$('ul#results').append('<li class="result">'+result.address+'</li>'); // and then append an item to the results list.
});
$('div#td_msg').show('slow'); // ........................................ Then, show the list after it's been populated.
}
});
});
// Update the input box when a result is clicked
// We're using the 'LiveQuery' plugin to gain control over elements added via JSON callbacks
$('ul#results li.result').livequery('click',function(){
var thisValue = $(this).text();
assignValue(thisValue);
return false;
});
});
/* ]]> */
</script>
</head>
<body>
<form action="/" method="post">
<fieldset>
<input id="target" type="text" value="Field 1" />
</fieldset>
</form>
<div id="td_msg"></div>
</body>
</html>
Initial URL
Initial Description
Initial Title
Graceful Geocoding with jQuery
Initial Tags
javascript, html, google, jquery, json
Initial Language
jQuery