document.addEventListener("DOMContentLoaded", () => {
    var mymap = L.map("locationmap").setView([38.891, 139.824], 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 locmarker = L.marker(mymap.getCenter()).addTo(mymap);
    locmarker.bindPopup("STARTおしてね").openPopup();

    var nTrial = 100
    var watchId = null;		// 最初はnullにしておく
    function stopLOC() {	// watchが動いていたら止めてnullにする
	console.log("watchId="+watchId);
	if (watchId != null) {	// nullかどうかで比較しないとだめ(初期値0)
	    navigator.geolocation.clearWatch(watchId);
	    document.getElementById("title").textContent = "stop";
	    locmarker.setPopupContent("停めました");
	}
	watchId = null;
    }
    function tryWatchLOC() {
	stopLOC();		// 二重で動かないように注意する
	watchId = navigator.geolocation.watchPosition(
	    onSuccess, onError,{
		maximumAge: 0, timeout: 3000, enableHighAccuracy: true});
	document.getElementById("title").textContent = "START!!";
    }
    
	let lastMarkerTime = 0;
	const MarkerInterval = 9000;
	
    function onSuccess(pos) {	// 衛星信号が取れたらここに来る
	//var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]);
	//mymap.panTo(latlng);// 地図の中心をそこにする
	//console.log(latlng);
	// ★★★★★ 
	//locmarker.setLatLng(latlng).setPopupContent(
	   // "ここは lat="+latlng.lat+", lng="+latlng.lng+" です."
	//).openPopup();

	const currentTime = Date.now();
	if (currentTime - lastMarkerTime >= MarkerInterval){
	
	var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]);
	mymap.panTo(latlng);// 地図の中心をそこにする
	console.log(latlng);
	
	var marker = [latlng.lat,latlng.lng]
	var mopt = {title: "位置" + new Date().toLocaleTimeString()};
	var m = L.marker(marker, mopt).addTo(mymap);
	
	m.bindPopup("ここは lat="+latlng.lat+", lng="+latlng.lng+" です.");
	
	lastMarkerTime = currentTime;
	}
	// ★★★★★ 
    }
    function onError(err) {
	restN = "あと"+(--nTrial)+"回試行します。";
	locmarker.setPopupContent("捕捉失敗:"+restN).openPopup();
	if (nTrial <= 0) {
	    navigator.geolocation.clearWatch(watchId);
	}
    }
    // STARTボタンに開始を仕込む
    document.getElementById("start").addEventListener("click", tryWatchLOC);
    // STOPボタンに停止を仕込む
    document.getElementById("stop").addEventListener("click", stopLOC);
}, false);
