blob: 29631fca505321b495a604d1c697e87dcccb0410 [file]
<!DOCTYPE html>
<html>
<head>
<title>Approximate Geolocation</title>
</head>
<body>
<button id="get-location-button">Get Location</button>
<geolocation accuracymode="approximate" id="geolocation-element-approximate"></geolocation>
<geolocation accuracymode="precise" id="geolocation-element-precise"></geolocation>
<script>
let result;
let resolveLocation;
async function getAccuracyModeResult() {
const pos = await result;
if (pos.coords.accuracy >= 2000) {
return "approximate";
}
return "precise";
}
// This function needs to be called before the <geolocation> element
// is clicked.
function initResultPromise(resolve) {
result = new Promise((resolve) => {
resolveLocation = resolve;
});
}
document.getElementById('get-location-button').addEventListener('click', () => {
result = new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(resolve, reject);
});
});
['geolocation-element-approximate', 'geolocation-element-precise'].forEach(id => {
document.getElementById(id).addEventListener('location', (event) => {
resolveLocation(event.target.position);
});
});
</script>
</body>
</html>