<!DOCTYPE html>
<html lang="ja">
<head>
<title>Try to Get GNSS Signal 10 times</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="leaflet.css" />
<script src="leaflet.js"></script>
<script type="text/javascript" src="locget-timer.js" charset="utf-8"></script>
<style type="text/css">
<!--
div#mymap {width: 90vw; height: 80vh; margin: 0 auto;}
button {
padding: 10px 20px;
font-size: 16px;
margin: 10px;
}
-->
</style>
</head>
<body>
<h1>Try 10 gets</h1>
<p>GNSS信号の取れない(弱い)ところでは、10回だけ
<span>getCurrentPosition()</span> を繰り返す。
取れたらその場所に地図移動する。</p>
<div>
<button id="startButton">START</button>
<button id="stopButton">STOP</button>
</div>
<div id="mymap"></div>
<script>
let map = L.map('mymap').setView([35.681236, 139.767125], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
let marker;
let count = 0;
let intervalId;
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, showError);
} else {
alert("Geolocation is not supported by this browser.");
}
}
function showPosition(position) {
let lat = position.coords.latitude;
let lon = position.coords.longitude;
if (marker) {
marker.setLatLng([lat, lon]);
} else {
marker = L.marker([lat, lon]).addTo(map);
}
map.setView([lat, lon], 13);
count++;
if (count >= 10) {
stopLocating();
}
}
function showError(error) {
switch(error.code) {
case error.PERMISSION_DENIED:
alert("User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
alert("Location information is unavailable.");
break;
case error.TIMEOUT:
alert("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
alert("An unknown error occurred.");
break;
}
stopLocating();
}
function startLocating() {
count = 0;
intervalId = setInterval(getLocation, 1000);
}
function stopLocating() {
clearInterval(intervalId);
}
document.getElementById('startButton').addEventListener('click', startLocating);
document.getElementById('stopButton').addEventListener('click', stopLocating);
</script>
</body>
</html>