简体   繁体   中英

Geo-Location Custom Update Interval (30 seconds)

I have a geo-location checking mobile application (for route tracking) and I need to be able to specify a custom temporal interval for location updates that can be modified by the user. I am using the watchPosition() function as accuracy is important and getCurrentPosition() does not seem to work very well. However, I still want the user to be able to customize the update interval depending on their preferences.

Here is a rough representation of my code so far: http://jsfiddle.net/ppyordanov/taz4g5t0/5/ .

html:

<div id="result"></div>

JS:

var latitude, longitude, accuracy;
function setGeolocation() {
    var geolocation = window.navigator.geolocation.watchPosition( 
        function ( position ) {
            latitude = position.coords.latitude;
            longitude = position.coords.longitude;
            accuracy = position.coords.accuracy;
            document.getElementById( 'result' ).innerHTML += 
                  'lat: ' + latitude + ', '
                + 'lng: ' + longitude + ', '
                + 'accuracy: ' + accuracy + '<br />';
        }, function () { 
            /*error*/ 
        }, {
            maximumAge: 250, 
            enableHighAccuracy: true
        } 
    );

};

setGeolocation();

window.setTimeout( function () {
        setGeolocation();
    }, 
    30000 //check every 30 seconds
);

I can use setTimeout() to manipulate the time interval, but it does not seem to have any effect on the output. It keeps updating about once every second. How can I increase that to 30 seconds?

Instead of calling setGeolocation(); every n seconds, I save the location in the window.navigator.geolocation.watchPosition() call and then update it in a separate function via the setInterval() function.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM