diff --git a/loc-chase2.js b/loc-chase2.js index 6d4a942..3377333 100644 --- a/loc-chase2.js +++ b/loc-chase2.js @@ -1,7 +1,7 @@ document.addEventListener("DOMContentLoaded", () => { - const mapDiv = document.getElementById("locationmap"); + // 地図の初期化 var mymap = L.map(mapDiv).setView([38.891, 139.824], 16); L.tileLayer("https://{s}.tile.osm.org/{z}/{x}/{y}.png", { @@ -9,11 +9,13 @@ '© OpenStreetMap contributors' }).addTo(mymap); + // マーカーの初期化 var locmarker = L.marker(mymap.getCenter()).addTo(mymap); locmarker.bindPopup("STARTおしてね").openPopup(); var watchId = null; + // 位置計測を停止する関数 function stopLOC() { if (watchId != null) { navigator.geolocation.clearWatch(watchId); @@ -23,6 +25,7 @@ watchId = null; } + // 位置計測を開始する関数 function tryWatchLOC() { stopLOC(); watchId = navigator.geolocation.watchPosition( @@ -33,12 +36,14 @@ document.getElementById("title").textContent = "START!!"; } + // 位置情報を更新し、判定を行う関数 function updateLocation(latlng) { mymap.panTo(latlng); const goalLat = 38.892; const goalLng = 139.825; + // 緯度・経度の差分 const dLat = Math.abs(latlng.lat - goalLat); const dLng = Math.abs(latlng.lng - goalLng); @@ -57,6 +62,7 @@ .openPopup(); } + // GPS取得成功時 function onSuccess(pos) { const latlng = L.latLng( pos.coords.latitude, @@ -65,26 +71,23 @@ updateLocation(latlng); } - function onError() {} + // GPS取得失敗時 + function onError(err) { + console.warn(`ERROR(${err.code}): ${err.message}`); + } - mapDiv.addEventListener("mousedown", (e) => { - stopLOC(); - const latlng = mymap.mouseEventToLatLng(e); - updateLocation(latlng); + // --- 【重要】クリック・タップイベントの統合 --- + // Leafletのmapオブジェクトに対して 'click' を設定すると + // スマホのタップもPCのクリックも両方反応します。 + mymap.on("click", (e) => { + stopLOC(); // 手動操作時はGPS追跡を止める + updateLocation(e.latlng); // クリックした地点の座標(e.latlng)を使用 }); - mapDiv.addEventListener("touchstart", (e) => { - stopLOC(); - const touch = e.touches[0]; - const latlng = mymap.mouseEventToLatLng(touch); - updateLocation(latlng); - }); - - + // ボタンのイベントリスナー document.getElementById("start") .addEventListener("click", tryWatchLOC); document.getElementById("stop") .addEventListener("click", stopLOC); - });