HTML5 Geolocation Demo
This is a demonstration of HTML5 Geolocation. Your location will be shown on Google Maps after your permission.
First I thought standard Geolocation APIs would work with all browsers including Safari and Firefox and Chrome, however it's impossible to get correct positional data from Chrome for Windows. I solved this problem by using Google Gears which requires to switch the code based on browser type as below.
var userAgent = window.navigator.userAgent.toLowerCase();
var chrome = (userAgent.indexOf("chrome") != -1) ? true : false;Then get positional data correctly both Chrome and Firefox as below. If you are not familiar with the getCurrentPosition() method, please check the specification on W3C.org.
var geolocation = (chrome) ?
   google.gears.factory.create('beta.geolocation') :
   navigator.geolocation;
geolocation.getCurrentPosition(
   successCallback,
   errorCallback);Finally get latitude and longitude according to what the browser type is, because these are not affordable via the coords object with Chrome, plot the client's position on Google Maps: I implemented PositionCallback and PositionErrorCallback as below.
function successCallback(p) {
   var lat = (chrome) ? p.latitude : p.coords.latitude;
   var lng = (chrome) ? p.longitude : p.coords.longitude;
   var pos = new google.maps.LatLng(lat, lng);
   var map = new google.maps.Map(document.getElementById("gmap"), {
       zoom : 16,
       center : pos,
       mapTypeId : google.maps.MapTypeId.ROADMAP
   });
   var marker = new google.maps.Marker({
       position : pos,
       map : map
   });
}
function errorCallback(err) {
   document.getElementById("msg").innerHTML =
       "Error using Geolocation API: " + error.message;
}
I've check if this program works with the latest version of Safari for Mac and Firefox and Chrome for Windows.
- Safari - Sometimes it works unstably and often fails to get positional data on Mac. This problem can be solved by quitting Safari once. Probably there might be a few glitches in the code.
- Firefox - It works with both Windows and Mac well.
- Chrome - Google Gears For Mac is unavailable in this moment so that it doesn't work with Chrome for Mac.
| Win | Mac | |
|---|---|---|
| Safari | × | ○ | 
| Firefox | ○ | ○ | 
| Chrome | ○ | × | 
| IE | × | × | 
0 comments: