Skip to content

Instantly share code, notes, and snippets.

@remy
Created January 29, 2010 00:22
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save remy/289323 to your computer and use it in GitHub Desktop.
Save remy/289323 to your computer and use it in GitHub Desktop.
Adds geolocation support via JavaScript and a service from maxmind.com to add the lat/long - perfect :)
if (!navigator.geolocation) {
navigator.geolocation = (function (window, document) {
function getCurrentPosition(callback) {
var geourl = 'http://www.google.com/jsapi?' + Math.random(),
iframe = document.createElement('iframe'),
doc, win;
iframe.style.display = 'none';
window.document.body.appendChild(iframe);
doc = iframe.contentDocument || iframe.contentWindow.document;
win = iframe.contentWindow;
// once the script has loaded, it triggers an onload event
// TODO: cross browser test
iframe.onload = function () {
// assign all the captured values across to our geo object
var geo = {
coords: {
latitude: win.google.loader.ClientLocation.latitude,
longitude: win.google.loader.ClientLocation.longitude
// other values are supported, i.e. accuracy, speed, heading, etc
},
timestamp: (new Date()).getTime()
};
// then remove the iframe from the body to clear the memory...I hope!
window.document.body.removeChild(iframe);
callback.call(callback, geo);
};
// create a document on the fly
doc.open();
doc.write('<' + 'script src="' + geourl + '"><' + '/script>');
doc.close();
}
return {
clearWatch: function () {},
getCurrentPosition: getCurrentPosition,
// TODO shouldn't be too difficult :)
watchPosition: function () {}
};
})(this, document);
}
@timwhitlock
Copy link

Thanks for alerting me to the MaxMind JavaScript service, I've only used their back end stuff.
However, the page does now say this:
"In order to use this Javascript on your website, a link back to the www.maxmind.com website should be provided, or a Javascript attribution-free license can be purchased for $250/year."

@remy
Copy link
Author

remy commented Jun 17, 2010

Ha! That's new!

I've been meaning to convert the code to use Google - let me see if I can't fix this :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment