You should realize code in javascript is asynchronous and that mainly the type of geolocation request you are making from the user's location uses a callback, so
function(position) {
document.cookie = "mylat="+position.coords.latitude;
document.cookie = "mylng="+position.coords.longitude;
}
Running after
var mylat = Number("<?php print_r($_COOKIE['mylat']); ?>");
var mylong = Number("<?php print_r($_COOKIE['mylng']); ?>");
So, you're probably getting a position only on the second run on. In addition to overwriting the variable document.cookie
with only the longitude.
To use localStorage you can use
navigator.geolocation.getCurrentPosition(function(position) {
// esta função é executada apenas depois de conseguir a localização
// o que pode acontecer depois do script fora desta função
var coords = position.coords; // apenas para encurtar
localStorage.setItem("mylat", coords.latitude); // gravar lat
localStorage.setItem("mylng", coords.longitude); // gravar lng
// mudar centro do mapa
map.setCenter({lat: position.coords, lng: position.coords});
})
// posição padrão em caso de não existir última posição gravada
var defaultLocation = {lat: -9.919302, lng: -50.486085};
var mylat = localStorage.getItem("mylat")
if (mylat === null) { // em caso de não existir lat gravada
mylat = defaultLocation.lng; // use a lat da localização padrão
}
var mylng = localStorage.getItem("mylng");
if (mylng === null) { // em caso de não existir lng gravada
mylng = defaultLocation.lng; // use a lng da localização padrão
}
var myLatLng = {lat: mylat , lng: mylng};
// Assumindo que você está usando um mapa da Google Maps Javascript API em map:
map.setCenter(myLatLng);