function gpsGetTimer() {
var timerInterval = 5000; // GPS取得再試行までの間隔(ミリ秒)
var mymap = L.map("mymap").setView([38.891, 139.824], 16);
L.tileLayer('//cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
attribution:
'<a href="http://maps.gsi.go.jp/development/ichiran.html">\
国土地理院</a>'
}).addTo(mymap);
var gpsmarker = L.marker(mymap.getCenter()).addTo(mymap);
gpsmarker.bindPopup("捕捉中...").openPopup();
var nTrial = 10;
var tmId = null;// 最初はnullにしておく
var gpsID = null; kyori = 0; takara = 0;
function tryGetGPS() { //gpsをとる動き
gpsmarker.setPopupContent("start").openPopup()
gpsID = navigator.geolocation.getCurrentPosition(
onSuccess, onError,{maximumAge: 0,
enableHighAccuracy: true,
timeout: 9000});
}
function stopGPS() { //gpsをとるのをやめる動き
navigator.geolocation.clearWatch(gpsID);
clearTimeout(tmId);
alert("とめたよ!");
}
var polyline = L.polyline([], {color: "red"}).addTo(mymap);
function onSuccess(pos) {
// 引数 pos は L.latlng で変換してから使用する
var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]);
mymap.flyTo(latlng); //その地点までとぶ
gpsmarker.setPopupContent(
"現在地は "+latlng+"です"
).openPopup().setLatLng(latlng);
gpsmarker.setLatLng(latlng);
var treg = [38.893846,139.819144]; //目的地の座標
//位置1.distanceTo(位置2)で2点間距離が得られる
kyori = latlng.distanceTo(treg);
if (kyori <= 10){
alert("お宝は近いよ!");
} else if (kyori == 0){
alert("やったあ!!お宝をみつけたよ!");
takara += 1;
info.innerHTML = "宝を一つ追加します!";
have.innerHTML = takara;
} else {
alert("まだまだ遠いぜ...");
}
}
function onError(err) {
var restN = "あと"+(--nTrial)+"回試行します。";
if (nTrial > 0) {
gpsmarker.setPopupContent("捕捉失敗:"+restN).openPopup();
tmId = setTimeout(tryGetGPS, timerInterval); // 5秒後に再試行
//tryGetGPS(); //setTimeoutでNGな機種はこちらにする
} else {
var m = '<span style="color: red;">中止します。</span>';
gpsmarker.setPopupContent(m).openPopup();
}
}
//tryGetGPS();
// document.getElementById("start").addEventListener( //startボタンを押したとき
// "click", tryGetGPS
// );
gpsmarker.on("click", function(e) {
tryGetGPS()
})
document.getElementById("stop").addEventListener( //stopボタンを押したとき
"click", stopGPS
);
}
document.addEventListener("DOMContentLoaded", gpsGetTimer, false);