document.addEventListener("DOMContentLoaded", () => {
    var dist = [
	[38.892123,139.818884],
	[38.891187,139.819313],
	[38.891780,139.823411]
    ];
    var center = [38.891, 139.824];
    var mymap = L.map("gpsmap").setView(center, 16);
    L.tileLayer('https://{s}.tile.osm.org/{z}/{x}/{y}.png', {
	attribution:
	'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> \
		contributors'
    }).addTo(mymap);

    /* 目的地のマーカー */
    var marker0 = L.marker(dist[0]).addTo(mymap);
    var marker1 = L.marker(dist[1]).addTo(mymap);
    var marker2 = L.marker(dist[2]).addTo(mymap);

    /* 移動するマーカー */
    var gpsmarker = L.marker(center).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);
	// ★★★★★ ここから
	/* もし目的地にマーカーが移動したら文字を表示 */
	if ((latlng.lat >= 38.892 && latlng.lat <= 38.893) && (latlng.lng >= 139.818 && latlng.lng <= 139.819)) {
	    marker.setLatLng(latlng).bindPopup("あ").openPopup();
	    document.getElementById("word1").textContent = "あ ";
	} else if ((latlng.lat >= 38.891 && latlng.lat <= 38.892) && (latlng.lng >= 139.819 && latlng.lng <= 139.820)) {
	    marker.setLatLng(latlng).bindPopup("い").openPopup();
	    document.getElementById("word2").textContent = "い ";
	} else if ((latlng.lat >= 38.891 && latlng.lat <= 38.892) && (latlng.lng >= 139.823 && latlng.lng <= 139.824)) {
	    marker.setLatLng(latlng).bindPopup("う").openPopup();
	    document.getElementById("word3").textContent = "う ";
	} else if ((latlng.lat >= 38.894 && latlng.lat <= 38.895) && (latlng.lng >= 139.819 && latlng.lng <= 139.820)) {
	    marker.setLatLng(latlng).bindPopup("GOAL!").openPopup();
	} else {
	    marker.setLatLng(latlng).bindPopup(
		"さらに目的地に近づいてください"
	    ).openPopup();
	}
    }
    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);
