Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

High accuracy geolocation Html5

Tags:

I am tring to locate a device using the embedded GPS (like whats app share location). I've read that it is possible with enableHighAccuracy: true.

How can I set enableHighAccuracy: true in this code? I tried in different positions but it doesn't work.

<script type="text/javascript">     if (navigator.geolocation) {         navigator.geolocation.getCurrentPosition(function(position) {             var latitude = position.coords.latitude;             var longitude = position.coords.longitude;             var accuracy = position.coords.accuracy;             var coords = new google.maps.LatLng(latitude, longitude);             var mapOptions = {                 zoom: 15,                 center: coords,                 mapTypeControl: true,                 navigationControlOptions: {                     style: google.maps.NavigationControlStyle.SMALL                 },                 mapTypeId: google.maps.MapTypeId.ROADMAP             };              var capa = document.getElementById("capa");             capa.innerHTML = "latitude: " + latitude + ", longitude: " + ", accuracy: " + accuracy;                map = new google.maps.Map(document.getElementById("mapContainer"), mapOptions);             var marker = new google.maps.Marker({                 position: coords,                 map: map,                 title: "ok"             });         });      } else {         alert("Geolocation API is not supported in your browser.");     }  </script> 
like image 247
Francesc VE Avatar asked Apr 24 '13 20:04

Francesc VE


People also ask

How accurate is HTML Geolocation API?

Geolocation sources Mobile devices tend to use triangulation techniques such as GPS (accurate to 10m and only works outside), WiFi and GSM / CDMA cell IDs (accurate to 1000m).

How accurate is geolocation in browser?

IP-based geolocation services provide 55 percent to 80 percent accuracy for a user's region or state. And they provide 50 percent to 75 percent accuracy for a user's city. In practice, the actual accuracy may vary from provider to provider and depending on the location of the device.

Does HTML5 have geolocation?

The HTML5 geolocation feature lets you find out the geographic coordinates (latitude and longitude numbers) of the current location of your website's visitor. This feature is helpful for providing better browsing experience to the site visitor.


1 Answers

You need a PositionOptions object, in which you set the high accuracy flag following the API.

I am quoting from here: http://diveintohtml5.info/geolocation.html

The getCurrentPosition() function has an optional third argument, a PositionOptions object. There are three properties you can set in a PositionOptions object. All the properties are optional. You can set any or all or none of them.

POSITIONOPTIONS OBJECT  Property            Type        Default         Notes -------------------------------------------------------------- enableHighAccuracy  Boolean     false           true might be slower timeout             long        (no default)    in milliseconds maximumAge          long        0               in milliseconds 

So, it should work like this:

if (navigator.geolocation) {     navigator.geolocation.getCurrentPosition(function(position) {         var latitude = position.coords.latitude;         var longitude = position.coords.longitude;         var accuracy = position.coords.accuracy;         var coords = new google.maps.LatLng(latitude, longitude);         var mapOptions = {             zoom: 15,             center: coords,             mapTypeControl: true,             navigationControlOptions: {                 style: google.maps.NavigationControlStyle.SMALL             },             mapTypeId: google.maps.MapTypeId.ROADMAP         };          var capa = document.getElementById("capa");         capa.innerHTML = "latitude: " + latitude + ", longitude: " + ", accuracy: " + accuracy;          map = new google.maps.Map(document.getElementById("mapContainer"), mapOptions);         var marker = new google.maps.Marker({             position: coords,             map: map,             title: "ok"         });      },     function error(msg) {alert('Please enable your GPS position feature.');},     {maximumAge:10000, timeout:5000, enableHighAccuracy: true}); } else {     alert("Geolocation API is not supported in your browser."); } 

Noticed I added the following 2 parameters to getCurrentPosition call:

  1. function error(msg){alert('Please enable your GPS position future.');}

    This function is called when GPS could not be retrieved or the timeout has been triggered.

  2. {maximumAge:10000, timeout:5000, enableHighAccuracy: true});

    These are the options. We don't want gps data that is older than 10 seconds (maximumAge:10000). We don't want to wait longer than 5 seconds for a response (timeout:5000) and we want to enable high accuracy (enableHighAccuracy: true).

Also see: Geolocation HTML5 enableHighAccuracy True , False or Best Option?

like image 132
Menelaos Avatar answered Oct 03 '22 14:10

Menelaos