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