document.addEventListener("DOMContentLoaded", () => {
var mymap = L.map("gpsmap").setView([38.891, 139.824], 16);
L.tileLayer('https://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution:
'© <a href="http://osm.org/copyright">OpenStreetMap</a> \
contributors'
}).addTo(mymap);
var gpsmarker = L.marker(mymap.getCenter()).addTo(mymap);
gpsmarker.bindPopup("STARTおしてね").openPopup();
var nTrial = 100
var watchId = null; // 最初はnullにしておく
function stopGPS() { // watchが動いていたら止めてnullにする
console.log("watchId="+watchId);
if (watchId != null) { // nullかどうかで比較しないとだめ(初期値0)
navigator.geolocation.clearWatch(watchId);
document.getElementById("title").textContent = "stop";
gpsmarker.setPopupContent("停めました");
}
watchId = null;
}
function tryWatchGPS() {
stopGPS(); // 二重で動かないように注意する
watchId = navigator.geolocation.watchPosition(
onSuccess, onError,{
maximumAge: 0, timeout: 3000, enableHighAccuracy: true});
document.getElementById("title").textContent = "START!!";
}
function onSuccess(pos) { // GPS信号が取れたらここに来る
var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]);
mymap.panTo(latlng);// 地図の中心をそこにする
console.log(latlng);
// ★★★★★ ここから
gpsmarker.setLatLng(latlng).setPopupContent(
"ここは lat="+latlng.lat+", lng="+latlng.lng+" です."
).openPopup()
if((latlng.lat <= 38.901170 && latlng.lng <= 139.823213) && (latlng.lat >= 38.887898 && latlng.lng >= 139.811797)) {
gpsmarker.setPopupContent("ここは飯森山です。キーワードは「ゲ」")
}
else if((latlng.lat <= 38.905762 && latlng.lng <= 139.806232) && (latlng.lat >= 38.821989 && latlng.lng >= 139.815331)) {
gpsmarker.setPopupContent("ここは若宮町です。キーワードは「一」")
}
else if((latlng.lat <= 38.913866 && latlng.lng >= 139.840708) && (latlng.lat >= 38.889463 && latlng.lng <= 139.846945)) {
gpsmarker.setPopupContent("ここは亀ヶ崎です。キーワードは「ム」")
}
else if((latlng.lat <= 38.922430 && latlng.lng <= 139.834814) && (latlng.lat >= 38.914016 && latlng.lng >= 139.840479)) {
gpsmarker.setPopupContent("ここは中町です。キーワードは「デ」")
}
else if((latlng.lat <= 38.913103 && latlng.lng <= 139.816775) && (latlng.lat >= 38.905111 && latlng.lng >= 139.811025)) {
gpsmarker.setPopupContent("ここは宮野浦です。キーワードは「ザ」")
}
else if((latlng.lat <= 38.922430 && latlng.lng <= 139.834814) && (latlng.lat >= 39.177028 && latlng.lng >= 139.516468)) {
gpsmarker.setPopupContent("ここは中町です。キーワードは「イ」")
}
else if((latlng.lat <= 39.209135 && latlng.lng <= 139.569798) && (latlng.lat >= 38.914016 && latlng.lng >= 139.840479)) {
gpsmarker.setPopupContent("ここは飛島です。キーワードは「ン」")
}
else{gpsmarker.setPopupContent("lat="+latlng.lat+", lng="+latlng.lng+"")}
// ★★★★★ ここまでの latlng.lat と latlng.lng を
// if文などで判定して、特定の場所に近づいたら「GOAL!」と
// 表示するように変えてみよ。
}
function onError(err) {
restN = "あと"+(--nTrial)+"回試行します。";
gpsmarker.setPopupContent("捕捉失敗:"+restN).openPopup();
if (nTrial <= 0) {
navigator.geolocation.clearWatch(watchId);
}
}
// STARTボタンに開始を仕込む
document.getElementById("start").addEventListener("click", tryWatchGPS);
// STOPボタンに停止を仕込む
document.getElementById("stop").addEventListener("click", stopGPS);
}, false);