diff --git a/map/domon/gps-game.js b/map/domon/gps-game.js index 5bb7ffa..f03cf65 100644 --- a/map/domon/gps-game.js +++ b/map/domon/gps-game.js @@ -40,58 +40,53 @@ totalDist += time; time.innerHTML = '時間: '+Math.round(tm)+'分';// info要素に距離を表示する } -function resetPath() { // 初期状態に戻す - sMarker.remove(mymap); // 始点マーカの除去 - gMarker.remove(mymap); // 終点マーカの除去 - line.remove(mymap); // 軌跡Polylineの除去 +function resetPath() { + sMarker.remove(mymap); + gMarker.remove(mymap); + line.remove(mymap); line = sMarker = gMarker = null; path = []; totalDist = 0; - mymap.doubleClickZoom.enable(); // ダブルクリックズーム許可 + mymap.doubleClickZoom.enable(); info.innerHTML = 'クリアしました'; } -function measurePath(e) { // クリック時の主となる処理 +function measurePath(e) { var imsg = '北緯 '+e.latlng.lat+' 東経 '+e.latlng.lng; - mymap.doubleClickZoom.disable(); // ダブルクリックズーム禁止 + mymap.doubleClickZoom.disable(); if (path.length > 1 && e.latlng.lat == path[path.length-1].lat && e.latlng.lng == path[path.length-1].lng) { - // ダブルクリック等により同じ箇所で2度クリックが起きた場合は - return null; // 何もせず return + return null; } - path.push(e.latlng); // クリック緯度経度を配列に追加 - if (path.length == 1) { // 始点未設定なら - // 始点終点マーカを生成しマップに貼り付けポップアップ文字列を登録 + path.push(e.latlng); + if (path.length == 1) { sMarker = L.marker(path[0]).addTo(mymap).bindPopup(imsg); gMarker = L.marker(path[0]).addTo(mymap).bindPopup(imsg); - line = L.polyline(path, lineprop).addTo(mymap) // polyline生成 + line = L.polyline(path, lineprop).addTo(mymap) info.innerHTML = imsg; time.innerHTML = time;// 情報表示 - } else { // 2個目以後のポイント打ちなら - line.addLatLng(e.latlng); // polylineにクリック点を追加 - gMarker.setLatLng(e.latlng); // 終点マーカをそこに移動 - } - if (path.length > 1) { // 2個以上点が打たれたら計算 + } else { + line.addLatLng(e.latlng); + gMarker.setLatLng(e.latlng); + if (path.length > 1) { updatedistance(latlngdist(path[path.length-2], path[path.length-1])); } - if (e.originalEvent.shiftKey) { // SHIFT+クリックで - resetPath(e); // 終了 + if (e.originalEvent.shiftKey) { + resetPath(e); } } -function removePoint(e) { // 1つ取消 - if (path.length > 1) { // 2つ以上点があれば - var rm = path.pop(); // 点保持配列の末尾を抜き取る - updatedistance(-latlngdist(rm, path[path.length-1])); // 引き算 - line.setLatLngs(path); // polylineの点リストを更新 - gMarker.setLatLng(path[path.length-1]); // 終点マーカを最終点に移動 - mymap.panTo(path[path.length-1]); // 最終点が見えるようにする - } else { // polylineの点が1つ以下なら +function removePoint(e) { + if (path.length > 1) { + var rm = path.pop(); + updatedistance(-latlngdist(rm, path[path.length-1])); + line.setLatLngs(path); + gMarker.setLatLng(path[path.length-1]); + mymap.panTo(path[path.length-1]); + } else { info.innerHTML = '始点は削れません。' } } -mymap.on('click', measurePath); // クリックイベントで measurePath() -mymap.on('contextmenu', removePoint); // 右クリックで removePoint() -// id="undo" のボタンクリックで「1つ取消」 +mymap.on('click', measurePath); +mymap.on('contextmenu', removePoint); document.getElementById('undo').addEventListener('click', removePoint); -// id="finish" のボタンクリックで「終了」 document.getElementById('finish').addEventListener('click', resetPath);