3936
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
1
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
2 // 愛
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
3 function goinit() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
4 var koeki_latlng = [38.8934, 139.819]; //38.725639, 139.826806
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
5 var baseLayer = {};
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
6 var map_osm = new L.tileLayer(
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
7 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
8 attribution : '© <a href="//osm.org/copyright">OpenStreetMap</a> contributors | <a href="//www.yatex.org/koeki/2018-koryoGO/">KoryoGO</a>'
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
9 , maxZoom: 20, maxNativeZoom: 18
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
10 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
11 baseLayer["OpenStreetMap"] = map_osm;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
12 var map_gsi = new L.tileLayer( // 国土地理院
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
13 'https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
14 attribution: "<a href='//www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html' target='_blank'>国土地理院</a>"
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
15 , maxZoom: 20, maxNativeZoom: 18
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
16 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
17 baseLayer["地理院地図"] = map_gsi;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
18 function putlog(msg, id = "ok") {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
19 var o = document.getElementById(id);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
20 if (o) o.innerHTML = msg;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
21 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
22 var map = L.map("map").setView(koeki_latlng, 15);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
23 map_osm.addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
24 L.control.scale().addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
25 var mapControl = L.control.layers(baseLayer, null).addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
26 var watchTimer = null // geolocation timer
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
27 function clearWatch() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
28 if (watchTimer) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
29 clearTimeout(watchTimer);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
30 watchTimer = null;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
31 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
32 watchID && navigator.geolocation.clearWatch(watchID);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
33 watchID = null;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
34 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
35 function stopChase() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
36 clearWatch();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
37 putlog("おしまい", "info");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
38 startButton.removeAttribute("disabled");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
39 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
40 function gotIt() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
41 stopChase();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
42 var g = document.getElementById("get");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
43 if (g) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
44 // document.getElementById("map").style.visibility = "hidden";
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
45 document.getElementById("map").style.zIndex = 0;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
46 // alert("みつかったー"+watchTimer);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
47 g.style.display = "block";
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
48 g.style.width = 500;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
49 g.style.height = "auto";
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
50 g.style.top = "20%";
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
51 g.style.right = "90%";
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
52 g.style.opacity = 0.8;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
53 g.style.zIndex = 20;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
54 g.style.transition = 10;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
55 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
56 putlog("捕獲!", "rest");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
57 tgt && map.removeLayer(tgt);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
58 tgt = L.marker(targetLoc).addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
59 tgt.bindPopup(foundMsg).openPopup();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
60 setTimeout(function() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
61 var g = document.getElementById("get");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
62 // g.removeChild(g.childNodes[0]);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
63 g.style.display = 'none';
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
64 putlog("", "rest");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
65 tgt._popup.setContent("さようなら");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
66 }, 10000);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
67 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
68 function dispDistance() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
69 //var d = getDistance(currentLoc, targetLoc);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
70 var d = currentLoc.distanceTo(targetLoc);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
71 d = Math.abs(Math.round(d-Math.min(curAccuracy, 10), 1));
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
72 var msg = currentLoc+targetLoc;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
73 putlog(msg);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
74 putlog("あと"+ d + "m", "rest");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
75 putlog("Count: "+ ++repeatCount, "info");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
76 if (d < threshold) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
77 gotIt();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
78 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
79 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
80 var repeatCount = 0, repeatMax = 30;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
81 var currentLoc = koeki_latlng;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
82 var curMarker, curCircle, curAccuracy;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
83 var curMarkerIcon = L.icon({
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
84 iconUrl: defIcon || "main.png",
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
85 // iconSize: [80, 120],
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
86 iconAnchor: [0, 00]
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
87 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
88 function mainMarker(pos) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
89 return L.marker(pos, {icon: curMarkerIcon});
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
90 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
91 function onLocationFound(e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
92 curAccuracy = e.accuracy / 2;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
93
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
94 if (curMarker) map.removeLayer(curMarker);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
95 curMarker = mainMarker(e.latlng).addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
96 curMarker.bindPopup("いまココ").openPopup();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
97 currentLoc = e.latlng;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
98 if (repeatCount%3 == 0) map.setView(e.latlng); // 3回に1回センタリング
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
99 if (curCircle) map.removeLayer(curCircle);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
100 curCircle = L.circle(e.latlng, curAccuracy).addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
101 dispDistance();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
102 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
103 function onLocationError(e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
104 putlog(e.message, "err")
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
105 if (true && !curMarker) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
106 currentLoc = L.latLng(koeki_latlng);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
107 curMarker = mainMarker(currentLoc).addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
108 curMarker.bindPopup("いまココ").openPopup();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
109 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
110 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
111
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
112 var tgt;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
113 function setNewLoc(latlng) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
114 putlog(latlng+"に設定しました", 'err');
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
115 targetLoc = latlng; // タップした地点をゴールにすり替える
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
116 dispDistance();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
117 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
118 map.on("click", function(e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
119 if (tgt) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
120 map.removeLayer(tgt);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
121 map.panTo(e.latlng);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
122 if (true) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
123 tgt = L.marker(e.latlng, {draggable: true}).addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
124 tgt.on("dragend", function (e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
125 setNewLoc(e.target.getLatLng());
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
126 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
127 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
128 setNewLoc(e.latlng);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
129 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
130 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
131 map.on('zoomend', function (e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
132 if (map._locateOptions) map._locateOptions.maxZoom = map.getZoom();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
133 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
134 var watchID, geoOpt = {maximumAge: 0, timeout: 2000,
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
135 enableHighAccuracy: true},
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
136 watchINT = 5000, watchTimer;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
137 function watchRestart() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
138 putlog("Sleeping...Count:"+repeatCount, "info");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
139 clearWatch();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
140 if (watchTimer) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
141 clearTimeout(watchTimer);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
142 watchTimer = null;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
143 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
144 watchTimer = setTimeout(startWatch, 7500);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
145 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
146 function watchFound(pos) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
147 putlog("Sleeping...FOUND!", "info");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
148 putlog("", "err");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
149 onLocationFound({
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
150 latlng: L.latLng([
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
151 pos.coords.latitude, pos.coords.longitude]),
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
152 accuracy: pos.coords.accuracy});
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
153 // watchRestart();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
154 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
155 function watchError() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
156 onLocationError({
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
157 message: "GPS信号が弱いようです"});
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
158 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
159 function startWatch() {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
160 putlog("Start...Count:"+repeatCount, "info");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
161 clearWatch(); // confirmation
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
162 watchID = navigator.geolocation.watchPosition(
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
163 // watchID = navigator.geolocation.getCurrentPosition(
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
164 watchFound, watchError, geoOpt
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
165 );
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
166 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
167 var startButton = document.getElementById("start");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
168 startButton.addEventListener("click", function(e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
169 startWatch();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
170 putlog("はじめます", "info");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
171 this.setAttribute("disabled", true);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
172 if (tgt) { // 開始したらターゲットを消す
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
173 map.removeLayer(tgt); // マニュアルモード時はマーカが見える
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
174 tgt = null;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
175 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
176 })
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
177 var endButtonClicks = 0;
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
178 document.getElementById("stop").addEventListener("click", function(e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
179 stopChase();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
180 if (++endButtonClicks > 9) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
181 document.getElementById("zuru").style.display = "inline";
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
182 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
183 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
184 document.getElementById("zuru").addEventListener("click", function(e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
185 gotIt();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
186 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
187 document.getElementById("(C)").addEventListener("click", function(e) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
188 tgt && tgt.removeLayer(tgt);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
189 tgt = L.marker(targetLoc).addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
190 putlog("マニュアル設定モード: 好きな位置をタップしてゴールを設定できます。置いたマーカをドラッグして移動できます。「追跡をはじめる」でゴールマーカが消えます。", "info")
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
191 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
192 // umappop([{'color': 'red', 'file': 'koryo-spots.geojson'}]);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
193 function loadgeofile(arg, callback) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
194 var xobj = new XMLHttpRequest();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
195 xobj.overrideMimeType("application/json");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
196 xobj.open('GET', arg['file'], true);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
197 xobj.onreadystatechange = function () {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
198 if (xobj.readyState == 4 && xobj.status == "200") {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
199 callback(arg, xobj.responseText);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
200 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
201 };
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
202 xobj.send(null);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
203 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
204 var json = loadgeofile({file: "koryo-spots.geojson"},
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
205 function(arg, text) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
206 var geojson = JSON.parse(text);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
207 var jL = L.geoJson(geojson);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
208 jL.addTo(map);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
209 });
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
210 var now = new Date();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
211 var today = ""+now.getFullYear()+"/"+(now.getMonth()+1)+"/"+now.getDate();
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
212 var koryogo = localStorage.getItem("koryogo-warning");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
213 if (koryogo != today) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
214 if (confirm("【silk Re:roadの 5つの誓い】\n\
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
215 ・危険な場所には行かない。\n\
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
216 ・移動するときはこの画面を見続けない。\n\
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
217 ・人の話を聞くべきときは画面を閉じる。\n\
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
218 ・すべては自己責任で楽しむ。\n\
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
219 ・誰かにやらせるときにはこれらを守らせる。")) {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
220 localStorage.setItem("koryogo-warning", today);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
221 } else {
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
222 alert("さようなら...");
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
223 var body = document.getElementsByTagName("body")[0];
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
224 body.parentNode.removeChild(body);
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
225 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
226 }
|
KITAJIMA Ryuto <c118077@roy.e.koeki-u.ac.jp>
parents:
diff
changeset
|
227 }
|