diff --git a/map/game/game.js b/map/game/game.js index c279cac..0ceb3df 100644 --- a/map/game/game.js +++ b/map/game/game.js @@ -44,7 +44,6 @@ } function onSuccess(pos) { var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]); - var imsg = '北緯 '+pos.latlng.lat+' 東経 '+pos.latlng.lng; mymap.panTo(latlng); console.log(latlng); gpsmarker.setLatLng(latlng).setPopupContent( @@ -83,7 +82,33 @@ } } - + function measurePath(pos) { // クリック時の主となる処理 + var imsg = '北緯 '+pos.latlng.lat+' 東経 '+pos.latlng.lng; + mymap.doubleClickZoom.disable(); // ダブルクリックズーム禁止 + if (path.length > 1 + && pos.latlng.lat == path[path.length-1].lat + && pos.latlng.lng == path[path.length-1].lng) { + // ダブルクリック等により同じ箇所で2度クリックが起きた場合は + return null; // 何もせず return + } + path.push(pos.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生成 + info.innerHTML = imsg; // 情報表示 + } else { // 2個目以後のポイント打ちなら + line.addLatLng(pos.latlng); // polylineにクリック点を追加 + gMarker.setLatLng(pos.latlng); // 終点マーカをそこに移動 + } + if (path.length > 1) { // 2個以上点が打たれたら計算 + updatedistance(latlngdist(path[path.length-2], path[path.length-1])); + } + if (e.originalEvent.shiftKey) { // SHIFT+クリックで + resetPath(e); // 終了 + } + } var path = []; // クリックしたすべての点を保持する var line = null; // polylineオブジェクトを保持する var lineprop = { // polylineのプロパティ