Skip to content
Create a gist now

Instantly share code, notes, and snippets.

@sandfox /example.html secret

Embed URL


Subversion checkout URL

You can clone with
Download ZIP
Using KDTree for geospatial lookups (slightly experimental) (this is an untested example)
<!Doctype html>
<script src="//"></script>
<script src="script.js"></script>
<a id="button" href="#">
<p>I AM A BUTTON</p>
<script type="text/javascript" src="kdtree.js"></script>
var storeTree = [];
var getNearest = function(location) {
nearest = storeTree.getNearestNeighbour({
x: location.coords.longitude,
y: location.coords.latitude
//if you just more than one result then use this function instead - returns an array of objects
* storeTree.getNearestNeighbours({
* x: location.coords.longitude,
* y: location.coords.latitude
*}, 1); //Number of results you want returned - they are always returned as an array
//data/records/XXX/.json is arbitary path
$.getJSON('data/records/' + + '.json',
function(returnedObject) {
//Do something with the returned object
var errorFunc = function(err){
$(document).ready(function () {
//Load up the index of stores - this is an odd way to do it
$.getJSON('data/records/index.json', function(data){
if(Array.isArray(data)) {
storeTree = new KDTree(data);
} else {
storeTree = new KDTree([]);
storeTree.rootNode = data.rootNode;
$('#button').click(function () {
navigator.geolocation.getCurrentPosition(getNearest, errorFunc, { enableHighAccuracy:true, timeout:1200, maximumAge:0 });

TODO - stop this using zepto if we can (or make another version which doesn't use it)
TODO - Move out kdtree into a gh repo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.