watchposition() update php sessie
Ik wil met watchposition ALLEEN als de positie wijzigd, een PHP sessie updaten, of in mijn database de huidige locatie updaten.
De vraag is wanneer weet ik wanneer een positie gewijzigd word, zodat ik alleen dan een updatefunctie kan aanroepen?
Is dit handig of is het beter om elke min bijv de huiige positie te updaten?
Ik wil dus dat op mijn map de actuele posities van gebruikers staan, maar wil geen overload creeren met overbodige api calls.
zodra een gebruiker zijn positie wijzigt (UPDATE) kun je direct je updatefunctie aanroepen. Behalve wanneer je dat op de achtergrond wil laten gebeuren dmv een cronjob. In dat geval zul je een extra kolom aan je tabel moeten toevoegen waarin je bijhoudt of een positie gewijzigd is. Als de gebruiker zijn positie aanpast dan zet je deze kolom op 0.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<script>
var id, target, options;
function success(pos) {
setTimeout(function() {
var crd = pos.coords;
alert(crd.latitude+'-->'+crd.longitude);
if (target.latitude === crd.latitude && target.longitude === crd.longitude) {
console.log('Congratulations, you reached the target');
navigator.geolocation.clearWatch(id);
}
}, 10000);
}
function error(err) {
console.warn('ERROR(' + err.code + '): ' + err.message);
}
target = {
latitude : 0,
longitude: 0
};
options = {
enableHighAccuracy: false,
timeout:10000,
frequency : 2,
distanceFilter:5,
maximumAge: 0
};
id = navigator.geolocation.watchPosition(success, error, options);
</script>
var id, target, options;
function success(pos) {
setTimeout(function() {
var crd = pos.coords;
alert(crd.latitude+'-->'+crd.longitude);
if (target.latitude === crd.latitude && target.longitude === crd.longitude) {
console.log('Congratulations, you reached the target');
navigator.geolocation.clearWatch(id);
}
}, 10000);
}
function error(err) {
console.warn('ERROR(' + err.code + '): ' + err.message);
}
target = {
latitude : 0,
longitude: 0
};
options = {
enableHighAccuracy: false,
timeout:10000,
frequency : 2,
distanceFilter:5,
maximumAge: 0
};
id = navigator.geolocation.watchPosition(success, error, options);
</script>
Als ik mijn telefoon gewoon stil leg op tafel, veranderd hij om de seconde. De settemeout lijkt niet te werken, hij blijft nu bij 5 seconde vernieuwen.
Ik wil dus via de google maps api de locatie aangepast hebben, alleen als deze wijzigt en het liefst als er minimaal 10 meter tussen de nieuwe en laatste locatie is.
Ik gebruik een ajax call waarbij ik alle markers via een mysql db ophaal.
Als ik 1000 gebruikers heb en er word om de 5 seconden bekeken wat de locaties zijn, dan word op dat moment een ajax call uitgevoerd die de nieuwe locaties binnenhaalt. Is dit geen overload voor de server?
Je had het over een cronjob op de achtergrond, maar snap niet op welke manier, want dat gebeurd toch allemaal clientside?