var _latitude = 37.535053; _longitude = 127.147263; _callback = null; function getPositionByGeo(pos) { _latitude = pos.coords.latitude; _longitude = pos.coords.longitude; _callback(_latitude, _longitude); } function getPositionByIP() { var xhr = new XMLHttpRequest(); var dat = new FormData(); dat.append("order", "geolocation"); xhr.open("POST", "/geo.php"); xhr.send(dat); xhr.onload = function() { if(xhr.status === 200 || xhr.status === 201) { var res = JSON.parse(xhr.responseText); if(res.latitude&&res.longitude) { _latitude = res.latitude; _longitude = res.longitude; _callback(_latitude, _longitude); } } }; } function getPosition(callback) { _callback = callback; if (navigator.geolocation) navigator.geolocation.getCurrentPosition(getPositionByGeo, getPositionByIP); else getPositionByIP(); }