PageSourceSearch

https://crssnky.xyz/DisasterAvoidance/js/AllInfomation.js

js crssnky.xyz collected 2026-10-04 00:30:51 UTC 47,975 bytes, 1,152 lines download raw bytes

1var gSidebarInApp=false;
2var AboutBoard=false;
3var map;
4var MarkerShelter=[];
5var MarkerPublicToilet=[];
6var MarkerMedicalInstitute=[];
7var MarkerHydrant=[];
8var MarkerPublicWIFI=[];
9var MarkerAED=[];
10var MarkerRAAUFD=[];
11var MarkerTemporaryGatheringLocation=[];
12var MarkerRoadConstruction=[];
13var directionsDisplay=[];
14var infoWindow;
15var resizeFinished;
16var TriTypePos=[];
17var EQinfoArrays=[];
18var EQURLArrays=[];
19var NowPos;
20var distination;
21const resizeCheckTime=Math.floor(1000/60*10);
22const userAgent=window.navigator.userAgent.toLowerCase();
23const rdfs="PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>";
24const geo="PREFIX geo:<http://www.w3.org/2003/01/geo/wgs84_pos#>";
25const rdf="PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>";
26const dc="PREFIX  dc:<http://purl.org/dc/elements/1.1/>";
27const odp="PREFIX odp:<http://odp.jig.jp/odp/1.0#>";
28const dcterms="PREFIX dcterms:<http://purl.org/dc/terms/>";
29const jrrk="PREFIX jrrk:<http://purl.org/jrrk#>";
30
31const baseQuery=[rdfs+geo+rdf+jrrk+"select distinct *{?s rdf:type jrrk:",";rdfs:label ?label;geo:lat ?lat;geo:long ?long;jrrk:address ?address;FILTER(regex(str(?s), "," ))}"];
32const baseURL="https://sparql.odp.jig.jp/api/v1/sparql?output=json&query=";
33const citiesQuery=odp+dcterms+rdfs+geo+rdf+'select distinct ?lat ?long ?labelen ?labeljp{?uri rdf:type odp:Dataset;dcterms:publisher ?name1.?name1 rdfs:label ?name.optional{?uri dcterms:modified ?d}?s rdf:type odp:OpenDataCity;rdfs:label ?labelen;rdfs:label ?labeljp;geo:lat ?lat;geo:long ?long;FILTER (regex(?name,"都")||regex(?name,"道")||regex(?name,"府")||regex(?name,"県"))FILTER regex(?labeljp,"^"+?name+"$")BIND (lang(?labelen) AS ?language)FILTER regex(str(?language),"en")BIND(lang(?labeljp) AS ?language2)FILTER regex(str(?language2),"ja")}ORDER BY ?labeljp';
34const typesQuery=[rdf+dcterms+dc+rdfs+odp+'select ?data{?uri rdf:type odp:Dataset;dcterms:publisher ?name1;dc:title ?data.?name1 rdfs:label ?name.FILTER (regex(?name,','))}'];
35const tweetTag=['<a href="https://twitter.com/intent/tweet?text=http://maps.google.com/maps?q=','" "target="_blank" ><b>Twitter</b></a>'];
36const lineTag=['<a href="http://linne.me/R/msg/text/?http%3a%2f%2fmaps%2egoogle%2ecom%2fmaps%3fq%3d','" "target="_blank"><b>LINE</b></a>'];
37const facebookTag=['<a href="https://www.facebook.com/sharer/sharer.php?u=http://maps.google.com/maps?q=','" "target="_blank"><b>FaceBook</b></a>']
38const markerStr=['<h4>','</h4><p>住所:','<br/>この施設を共有する</p>','<br/><br/><a class="btn btn-xs btn-danger" onclick="RouteChange([','])">ルート先をここへ変更する</a>'];
39var slidebarSize=235;
40
41function sidebar() {
42    var SidebarState=0;
43    var Target=document.getElementById("sidebar").style;
44
45    if (gSidebarInApp) {
46        SidebarState=0;
47        (function moveL() {
48            if (SidebarState>-slidebarSize) {
49                setTimeout(moveL,10);
50            }
51            SidebarState-=10;
52            Target.left=SidebarState+"px";
53            if (SidebarState<=-slidebarSize) {
54                gSidebarInApp=false;
55                return;
56            }
57        })();
58    } else {
59        SidebarState=-slidebarSize;
60        (function moveR() {
61            if (SidebarState<0) {
62                setTimeout(moveR,10);
63            }
64            SidebarState+=10;
65            if (SidebarState>=0) {
66                gSidebarInApp=true;
67                return;
68            }
69            Target.left=SidebarState+"px";
70        })();
71    }
72}
73
74function mapDrawing(latlng) {
75    var opts={
76        zoom: 10,
77        center: latlng,
78        mapTypeId: google.maps.MapTypeId.TERRAIN
79    };
80    map=new google.maps.Map(document.getElementById("map_canvas"),opts);
81}
82
83//map init
84function initialize() {
85    for (var i=0;i<9;i++) {
86        directionsDisplay[i]=new google.maps.DirectionsRenderer();
87    }
88    var NowCity='なんでもない県どこか市';
89    //mapCenter
90    var latlng=new google.maps.LatLng(35.0,137.1);
91    if (window.navigator.geolocation) {
92        window.navigator.geolocation.getCurrentPosition(
93            function (position) {
94                latlng=new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
95                var geocoder=new google.maps.Geocoder();
96                geocoder.geocode({
97                    latLng: latlng
98                },function (results,status) {
99                    if (status==google.maps.GeocoderStatus.OK) {
100                        if (results[0].geometry) {
101                            var address=results[0].formatted_address.split(' ');
102                            NowCity=address[2];
103                        }
104                    }
105                    CitySet(NowCity);
106                });
107                mapDrawing(latlng);
108                TriTypePos[0]=latlng;
109            },
110            function (error) {
111                alert("位置情報取得エラー:"+error.message);
112                mapDrawing(latlng);
113                TriTypePos[1]=latlng;
114                $('input[name=startPos]').val(['MapCenter']);
115                RadioChange();
116                CitySet(NowCity);
117            },
118            {
119                enableHighAccuracy: true,
120                timeout: 2000,
121                maximumAge: 60000
122            }
123        );
124    } else {
125        mapDrawing(latlng);
126    }
127
128    //EQinfo
129    //EarthQuakeInfoGet2();
130
131    scrollNes();
132}
133function scrollNes() {
134    var cHeight=document.getElementById("sidebar").clientHeight;
135    var sHeight=document.getElementById("sidebar").scrollHeight;
136    if ((sHeight-cHeight)>0) {
137        slidebarSize=260;
138        $('.sidebar').css('left','-260px');
139        $('.sidebar').css('width','260px');
140        $('#PosTypes').css('left','17px');
141    } else {
142        $('.sidebar').css('left','-235px');
143        $('.sidebar').css('width','235px');
144        $('#PosTypes').css('left','9px');
145    }
146}
147function CitySet(NowCityNoYATSU) {
148    var NowCities=NowCityNoYATSU.split('県');
149    var NowCity="HelloNCF!";
150    try {
151        NowCity=NowCities[1].split(/市|町|村/)[0];
152    } catch (e) { }
153    var url=baseURL+encodeURIComponent(citiesQuery);
154    d3.json(url,function (error,data) {
155        var jsons=data["results"]["bindings"];
156        if (jsons.length==0) {
157            alert('データベース内に見つかりませんでした。');
158            return false;
159        }
160        var selected=false;
161        for (var i=0;i<jsons.length;i++) {
162            var Administration='日本';
163            switch (jsons[i].labeljp.value.split(/道|都|府|県/)[0]) {
164                case '北海': Administration='Hokkaido'; break;
165                case '青森':
166                case '秋田':
167                case '岩田':
168                case '宮城':
169                case '山形':
170                case '福島': Administration='Tohoku'; break;
171                case '茨城':
172                case '栃木':
173                case '群馬':
174                case '埼玉':
175                case '千葉':
176                case '東京':
177                case '神奈川': Administration='Kanto'; break;
178                case '山梨':
179                case '長野':
180                case '新潟':
181                case '富山':
182                case '石川':
183                case '福井':
184                case '静岡':
185                case '愛知':
186                case '岐阜': Administration='Chubu'; break;
187                case '三重':
188                case '滋賀':
189                case '京都':
190                case '大阪':
191                case '兵庫':
192                case '奈良':
193                case '和歌山': Administration='Kinki'; break;
194                case '鳥取':
195                case 'å³¶æ ¹':
196                case '岡山':
197                case '広島':
198                case '山口': Administration='Chugoku'; break;
199                case '香川':
200                case '愛媛':
201                case '徳島':
202                case '高知': Administration='Shikoku'; break;
203                case '福岡':
204                case '佐賀':
205                case '長崎':
206                case '熊本':
207                case '大分':
208                case '宮崎':
209                case '鹿児島':
210                case '沖縄': Administration='Kyusyu'; break;
211            }
212
213            $('#'+Administration).append($('<option id="select'+i+'">').html(jsons[i].labeljp.value/*+','+jsons[i].labelen.value.split('-')[0]).val(jsons[i].labelen.value.split('-')[0].toLowerCase()*/));
214            document.getElementById('select'+i).setAttribute('data-latitude',jsons[i].lat.value);
215            document.getElementById('select'+i).setAttribute('data-longitude',jsons[i].long.value);
216            document.getElementById('select'+i).setAttribute('data-labelen',jsons[i].labelen.value.split('-')[0].toLowerCase());
217            if (NowCities.length>1) {
218                if (jsons[i].labeljp.value.match(NowCity)!=null) {
219                    document.getElementById('select'+i).selected=true;
220                    selected=true;
221                }
222            }
223        }
224        if (!selected) {
225            for (var i=0;i<jsons.length;i++) {
226                if (jsons[i].labeljp.value.length<5&&jsons[i].labeljp.value.match(NowCities[0])!=null) {
227                    document.getElementById('select'+i).selected=true;
228                    selected=true;
229                }
230            }
231        }
232        SelectsSelect();
233        return true;
234    });
235}
236function SetMarker(marker,data,index) {
237    marker.setMap(map);
238    google.maps.event.addListener(marker,'click',function () {
239        if (infoWindow)
240            infoWindow.close();
241        var info=new google.maps.InfoWindow({
242            content: markerStr[0]+marker.title+markerStr[1]+data.address.value+markerStr[2]+tweetTag[0]+data.lat.value+","+data.long.value+tweetTag[1]+'  '+lineTag[0]+data.lat.value+","+data.long.value+lineTag[1]+'  '+facebookTag[0]+data.lat.value+","+data.long.value+facebookTag[1]+markerStr[3]+data.lat.value+","+data.long.value+","+index+markerStr[4]
243        });
244        info.open(map,marker);
245        infoWindow=info;
246    });
247}
248function SetMarker4Georsspoint(marker,data,index) {
249    marker.setMap(map);
250    google.maps.event.addListener(marker,'click',function () {
251        var latlngTMP=data.georsspoint.value;
252        var latlngArray=latlngTMP.split(" - ");
253        if (infoWindow)
254            infoWindow.close();
255        var info=new google.maps.InfoWindow({
256            content: markerStr[0]+marker.title+'</h4><p>この場所を共有する</p>'+tweetTag[0]+latlngArray[0]+","+latlngArray[1]+tweetTag[1]+'  '+lineTag[0]+latlngArray[0]+","+latlngArray[1]+lineTag[1]+'  '+facebookTag[0]+latlngArray[0]+","+latlngArray[1]+facebookTag[1]+markerStr[3]+latlngArray[0]+","+latlngArray[1]+","+index+marker
256Str[4]
257        });
258        info.open(map,marker);
259        infoWindow=info;
260    });
261}
262
263function checkShelter() {
264    if (document.getElementById("避難所").checked) {
265        var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).getAttribute('data-labelen');
266        var query=baseQuery[0]+"EmergencyFacility"+baseQuery[1]+'"'+cityName+'"'+baseQuery[2];
267        var url=baseURL+encodeURIComponent(query);
268        d3.json(url,function (error,data) {
269            var jsons=data["results"]["bindings"];
270            if (jsons.length==0) {
271                alert('データベース内に見つかりませんでした。');
272                return;
273            }
274            jsons=TargetSortByDistance(jsons);
275            for (var i=0;i<jsons.length;i++) {
276                var latlng=new google.maps.LatLng(jsons[i].lat.value,jsons[i].long.value);
277                var marker=new google.maps.Marker({
278                    position: latlng,
279                    title: jsons[i].label.value,
280                    icon: "https://crssnky.xyz/AllInformation/orange.png"
281                });
282                MarkerShelter.push(marker);
283                SetMarker(marker,jsons[i],0);
284            }
285            RootSelect(jsons.slice(0,9),0);
286        }).on("error",function (error) {
287            console.log(error);
288        });
289        sidebar();
290    } else {
291        if (MarkerShelter) {
292            for (i in MarkerShelter) {
293                MarkerShelter[i].setMap(null);
294            }
295            MarkerShelter.length=0;
296            directionsDisplay[0].setDirections(null);
297            directionsDisplay[0].setMap(null);
298        }
299    }
300}
301function checkPublicToilet() {
302    if (document.getElementById("公共トイレ情報").checked) {
303        var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).getAttribute('data-labelen');
304        var query=baseQuery[0]+"PublicToilet"+baseQuery[1]+'"'+cityName+'"'+baseQuery[2];
305        query=query.replace('jrrk:address ?address;','');
306        var url=baseURL+encodeURIComponent(query);
307        d3.json(url,function (error,data) {
308            var jsons=data["results"]["bindings"];
309            if (jsons.length==0) {
310                alert('データベース内に見つかりませんでした。');
311                return;
312            }
313            jsons=TargetSortByDistance(jsons);
314            for (var i=0;i<jsons.length;i++) {
315                var latlng=new google.maps.LatLng(jsons[i].lat.value,jsons[i].long.value);
316                var marker=new google.maps.Marker({
317                    position: latlng,
318                    title: jsons[i].label.value,
319                    icon: "https://crssnky.xyz/AllInformation/red.png"
320                });
321                MarkerPublicToilet.push(marker);
322                SetMarker(marker,jsons[i],1);
323            }
324            RootSelect(jsons.slice(0,9),1);
325        });
326        sidebar();
327    } else {
328        if (MarkerPublicToilet) {
329            for (i in MarkerPublicToilet) {
330                MarkerPublicToilet[i].setMap(null);
331            }
332            MarkerPublicToilet.length=0;
333            directionsDisplay[1].setDirections(null);
334            directionsDisplay[1].setMap(null);
335        }
336    }
337}
338function checkMedicalInstitute() {
339    if (document.getElementById("医療機関").checked) {
340        var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).getAttribute('data-labelen');
341        var query=baseQuery[0]+"MedicalInstitute"+baseQuery[1]+'"'+cityName+'"'+baseQuery[2];
342        var url=baseURL+encodeURIComponent(query);
343        d3.json(url,function (error,data) {
344            var jsons=data["results"]["bindings"];
345            if (jsons.length==0) {
346                alert('データベース内に見つかりませんでした。');
347                return;
348            }
349            jsons=TargetSortByDistance(jsons);
350            for (var i=0;i<jsons.length;i++) {
351                var latlng=new google.maps.LatLng(jsons[i].lat.value,jsons[i].long.value);
352                var marker=new google.maps.Marker({
353                    position: latlng,
354                    title: jsons[i].label.value,
355                    icon: "https://crssnky.xyz/AllInformation/purple.png"
356                });
357                MarkerMedicalInstitute.push(marker);
358                SetMarker(marker,jsons[i],2);
359            }
360            RootSelect(jsons.slice(0,9),2);
361        });
362        sidebar();
363    } else {
364        if (MarkerMedicalInstitute) {
365            for (i in MarkerMedicalInstitute) {
366                MarkerMedicalInstitute[i].setMap(null);
367            }
368            MarkerMedicalInstitute.length=0;
369            directionsDisplay[2].setDirections(null);
370            directionsDisplay[2].setMap(null);
371        }
372    }
373}
374function checkHydrant() {
375    if (document.getElementById("消火栓情報").checked) {
376        var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).getAttribute('data-labelen');
377        var query=baseQuery[0]+"Hydrant"+baseQuery[1]+'"'+cityName+'"'+baseQuery[2];
378        var url=baseURL+encodeURIComponent(query);
379        d3.json(url,function (error,data) {
380            var jsons=data["results"]["bindings"];
381            if (jsons.length==0) {
382                alert('データベース内に見つかりませんでした。');
383                return;
384            }
385            jsons=TargetSortByDistance(jsons);
386            for (var i=0;i<jsons.length;i++) {
387                var latlng=new google.maps.LatLng(jsons[i].lat.value,jsons[i].long.value);
388                var marker=new google.maps.Marker({
389                    position: latlng,
390                    title: jsons[i].label.value,
391                    icon: "https://crssnky.xyz/AllInformation/white.png"
392                });
393                MarkerHydrant.push(marker);
394                SetMarker(marker,jsons[i],3);
395            }
396            RootSelect(jsons.slice(0,9),3);
397        });
398        sidebar();
399    } else {
400        if (MarkerHydrant) {
401            for (i in MarkerHydrant) {
402                MarkerHydrant[i].setMap(null);
403            }
404            MarkerHydrant.length=0;
405            directionsDisplay[3].setDirections(null);
406            directionsDisplay[3].setMap(null);
407        }
408    }
409}
410function checkPublicWIFI() {
411    if (document.getElementById("公衆無線LAN").checked) {
412        var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).getAttribute('data-labelen');
413        var query=baseQuery[0]+"PublicWIFI"+baseQuery[1]+'"'+cityName+'"'+baseQuery[2];
414        var url=baseURL+encodeURIComponent(query);
415        d3.json(url,function (error,data) {
416            var jsons=data["results"]["bindings"];
417            if (jsons.length==0) {
418                alert('データベース内に見つかりませんでした。');
419                return;
420            }
421            jsons=TargetSortByDistance(jsons);
422            for (var i=0;i<jsons.length;i++) {
423                var latlng=new google.maps.LatLng(jsons[i].lat.value,jsons[i].long.value);
424                var marker=new google.maps.Marker({
425                    position: latlng,
426                    title: jsons[i].label.value,
427                    icon: "https://crssnky.xyz/AllInformation/lightblue.png"
428                });
429                MarkerPublicWIFI.push(marker);
430                SetMarker(marker,jsons[i],4);
431            }
432            RootSelect(jsons.slice(0,9),4);
433        });
434        sidebar();
435    } else {
436        if (MarkerPublicWIFI) {
437            for (i in MarkerPublicWIFI) {
438                MarkerPublicWIFI[i].setMap(null);
439            }
440            MarkerPublicWIFI.length=0;
441            directionsDisplay[4].setDirections(null);
442            directionsDisplay[4].setMap(null);
443        }
444    }
445}
446function checkAED() {
447    if (document.getElementById("AED情報").checked) {
448        var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).getAttribute('data-labelen');
449        var query=baseQuery[0]+"AED"+baseQuery[1]+'"'+cityName+'"'+baseQuery[2];
450        var url=baseURL+encodeURIComponent(query);
451        d3.json(url,function (error,data) {
452            var jsons=data["results"]["bindings"];
453            if (jsons.length==0) {
454                alert('データベース内に見つかりませんでした。');
455                return;
456            }
457            jsons=TargetSortByDistance(jsons);
458            for (var i=0;i<jsons.length;i++) {
459                var latlng=new google.maps.LatLng(jsons[i].lat.value,jsons[i].long.value);
460                var marker=new google.maps.Marker({
461                    position: latlng,
462                    title: jsons[i].label.value,
463                    icon: "https://crssnky.xyz/AllInformation/yellow.png"
464                });
465                MarkerAED.push(marker);
466                SetMarker(marker,jsons[i],5);
467            }
468            RootSelect(jsons.slice(0,9),5);
469        });
470        sidebar();
471    } else {
472        if (MarkerAED) {
473            for (i in MarkerAED) {
474                MarkerAED[i].setMap(null);
475            }
476            MarkerAED.length=0;
477            directionsDisplay[5].setDirections(null);
478            directionsDisplay[5].setMap(null);
479        }
480    }
481}
482function checkRAAUFD() {
483    if (document.getElementById("災害時要援護者利用施設").checked) {
484        var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).getAttribute('data-labelen');
485        var query=baseQuery[0]+"RequiringAssistanceAuthorizedUsersFacilityDisaster"+baseQuery[1]+'"'+cityName+'"'+baseQuery[2];
486        var url=baseURL+encodeURIComponent(query);
487        d3.json(url,function (error,data) {
488            var jsons=data["results"]["bindings"];
489            if (jsons.length==0) {
490                alert('データベース内に見つかりませんでした。');
491                return;
492            }
493            jsons=TargetSortByDistance(jsons);
494            for (var i=0;i<jsons.length;i++) {
495                var latlng=new google.maps.LatLng(jsons[i].lat.value,jsons[i].long.value);
496                var marker=new google.maps.Marker({
497                    position: latlng,
498                    title: jsons[i].label.value,
499                    icon: "https://crssnky.xyz/AllInformation/pink.png"
500                });
501                MarkerRAAUFD.push(marker);
502                SetMarker(marker,jsons[i],6);
503            }
504            RootSelect(jsons.slice(0,9),6);
505        });
506        sidebar();
507    } else {
508        if (MarkerRAAUFD) {
509            for (i in MarkerRAAUFD) {
510                MarkerRAAUFD[i].setMap(null);
511            }
512            MarkerRAAUFD.length=0;
513            directionsDisplay[6].setDirections(null);
514            directionsDisplay[6].setMap(null);
515        }
516    }
517}
518function checkTemporaryGatheringLocation() {
519    if (document.getElementById("一時避難所").checked) {
520        var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).getAttribute('data-labelen');
521        var query=baseQuery[0]+"TemporaryGatheringLocation"+baseQuery[1]+'"'+cityName+'"'+baseQuery[2];
522        query=query.replace('jrrk:address ?address;','');
523        var url=baseURL+encodeURIComponent(query);
524        d3.json(url,function (error,data) {
525            var jsons=data["results"]["bindings"];
526            if (jsons.length==0) {
527                alert('データベース内に見つかりませんでした。');
528                return;
529            }
530            jsons=TargetSortByDistance(jsons);
531            for (var i=0;i<jsons.length;i++) {
532                var latlng=new google.maps.LatLng(jsons[i].lat.value,jsons[i].long.value);
533                var marker=new google.maps.Marker({
534                    position: latlng,
535                    title: jsons[i].label.value,
536                    icon: "https://crssnky.xyz/AllInformation/blue.png"
537                });
538                MarkerTemporaryGatheringLocation.push(marker);
539                SetMarker(marker,jsons[i],7);
540            }
541            RootSelect(jsons.slice(0,9),7);
542        });
543        sidebar();
544    } else {
545        if (MarkerTemporaryGatheringLocation) {
546            for (i in MarkerTemporaryGatheringLocation) {
547                MarkerTemporaryGatheringLocation[i].setMap(null);
548            }
549            MarkerTemporaryGatheringLocation.length=0;
550            directionsDisplay[7].setDirections(null);
551            directionsDisplay[7].setMap(null);
552        }
553    }
554}
555function checkRoadConstruction() {
556    var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).textContent.split(',')[0];
557
558    if (document.getElementById("道路工事情報").checked&&cityName=='福井県鯖江市') {
559        var query="PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>       \
560            PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>                  \
561            PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>  \
562            PREFIX j0: <http://www.georss.org/>                             \
563                                                                                    \
564            select distinct ?label ?georsspoint ?nodeID {                  \
565            GRAPH<http://data.city.sabae.lg.jp/rdf/175>{                                                 \
566            ?nodeID                                                                \
567            rdfs:label ?label;                                                      \
568            j0:georsspoint ?georsspoint;                                                        \
569            }}";
570        var url=baseURL+encodeURIComponent(query);
571        d3.json(url,function (error,data) {
572            var jsons=data["results"]["bindings"];
573            if (jsons.length==0) {
574                alert('データベース内に見つかりませんでした。');
575                return;
576            }
577            jsons=TargetSortByDistance4Georsspoint(jsons);
578            for (var i=0;i<jsons.length;i++) {
579                var latlngTMP=jsons[i].georsspoint.value;
580                var latlngArray=latlngTMP.split(" - ");
581                var nodeID=jsons[i].nodeID.value;
582                var latlng=new google.maps.LatLng(latlngArray[0],latlngArray[1]);
583                var marker=new google.maps.Marker({
584                    position: latlng,
585                    title: jsons[i].label.value,
586                    icon: "https://crssnky.xyz/AllInformation/green.png"
587                });
588                MarkerRoadConstruction.push(marker);
589                SetMarker4Georsspoint(marker,jsons[i],8);
590            }
591            RootSelect4Georsspoint(jsons.slice(0,9),8);
592        });
593        sidebar();
594    } else {
595        if (MarkerRoadConstruction) {
596            for (i in MarkerRoadConstruction) {
597                MarkerRoadConstruction[i].setMap(null);
598            }
599            MarkerRoadConstruction.length=0;
600            directionsDisplay[8].setDirections(null);
601            directionsDisplay[8].setMap(null);
602        }
603    }
604}
605
606
607function checkAbout() {
608    if (!AboutBoard) {
609        document.getElementById("ABOUT").style.zIndex=100;
610        setTimeout(function () {
611            AboutBoard=true;
612        },100);
613    }
614}
615function RemoveAbout() {
616    if (AboutBoard) {
617        document.getElementById("ABOUT").style.zIndex=-100;
618        setTimeout(function () {
619            AboutBoard=false;
620        },100);
621    }
622}
623
624window.addEventListener('resize',function (event) {
625    if (resizeFinished!==false) {
626        clearTimeout(resizeFinished);
627    }
628    resizeFinished=setTimeout(function () {
629        clearTimeout(EarthQuakeInfoMove);
630        EarthQuakeInfoWidth();
631        setTimeout('EarthQuakeInfoMove()');
632    },resizeCheckTime);
633    gSidebarInApp=false;
634    scrollNes();
635});
636
637function DataResourceChange(select) {
638    DataClear();
639    var selectedItem=select.options.item(select.selectedIndex);
640
641    var latlng=new google.maps.LatLng(selectedItem.getAttribute('data-latitude'),selectedItem.getAttribute('data-longitude'));
642    map.setCenter(latlng);
643    if (selectedItem.innerHTML.split(',')[0]=='北海道') {
644        map.setZoom(7);
645    } else if (selectedItem.innerHTML.split(',')[0].length<5) {
646        map.setZoom(9);
647    } else {
648        map.setZoom(13);
649    }
650    SelectsSelect();
651}
652function DataClear() {
653    if (MarkerShelter) {
654        for (i in MarkerShelter) {
655            MarkerShelter[i].setMap(null);
656        }
657        MarkerShelter.length=0;
658        directionsDisplay[0].setDirections(null);
659        directionsDisplay[0].setMap(null);
660    }
661    if (MarkerPublicToilet) {
662        for (i in MarkerPublicToilet) {
663            MarkerPublicToilet[i].setMap(null);
664        }
665        MarkerPublicToilet.length=0;
666        directionsDisplay[1].setDirections(null);
667        directionsDisplay[1].setMap(null);
668    }
669    if (MarkerMedicalInstitute) {
670        for (i in MarkerMedicalInstitute) {
671            MarkerMedicalInstitute[i].setMap(null);
672        }
673        MarkerMedicalInstitute.length=0;
674        directionsDisplay[2].setDirections(null);
675        directionsDisplay[2].setMap(null);
676    }
677    if (MarkerHydrant) {
678        for (i in MarkerHydrant) {
679            MarkerHydrant[i].setMap(null);
680        }
681        MarkerHydrant.length=0;
682        directionsDisplay[3].setDirections(null);
683        directionsDisplay[3].setMap(null);
684    }
685    if (MarkerPublicWIFI) {
686        for (i in MarkerPublicWIFI) {
687            MarkerPublicWIFI[i].setMap(null);
688        }
689        MarkerPublicWIFI.length=0;
690        directionsDisplay[4].setDirections(null);
691        directionsDisplay[4].setMap(null);
692    }
693    if (MarkerAED) {
694        for (i in MarkerAED) {
695            MarkerAED[i].setMap(null);
696        }
697        MarkerAED.length=0;
698        directionsDisplay[5].setDirections(null);
699        directionsDisplay[5].setMap(null);
700    }
701    if (MarkerRAAUFD) {
702        for (i in MarkerRAAUFD) {
703            MarkerRAAUFD[i].setMap(null);
704        }
705        MarkerRAAUFD.length=0;
706        directionsDisplay[6].setDirections(null);
707        directionsDisplay[6].setMap(null);
708    }
709    if (MarkerTemporaryGatheringLocation) {
710        for (i in MarkerTemporaryGatheringLocation) {
711            MarkerTemporaryGatheringLocation[i].setMap(null);
712        }
713        MarkerTemporaryGatheringLocation.length=0;
714        directionsDisplay[7].setDirections(null);
715        directionsDisplay[7].setMap(null);
716    }
717    if (MarkerRoadConstruction) {
718        for (i in MarkerRoadConstruction) {
719            MarkerRoadConstruction[i].setMap(null);
720        }
721        MarkerRoadConstruction.length=0;
722        directionsDisplay[8].setDirections(null);
723        directionsDisplay[8].setMap(null);
724    }
725}
726function SelectsSelect() {
727    var sels=document.getElementById('selParent').children;
728    for (var i=1;i<sels.length;i++) {
729        sels[i].children[0].children[0].disabled=true;
730        sels[i].children[0].children[0].checked=false;
731    }
732    var cityName=document.getElementById('citySelection').options.item(document.getElementById('citySelection').selectedIndex).textContent.split(',')[0];
733    var query=typesQuery[0]+'"'+cityName+'"'+typesQuery[1];
734    var url=baseURL+encodeURIComponent(query);
735    d3.json(url,function (error,data) {
736        var jsons=data["results"]["bindings"];
737        if (jsons.length==0) {
738            alert('データベース読み込みエラー\nページを再読み込みしてください');
739            return;
740        }
741        for (var i=0;i<jsons.length;i++) {
742            try {
743                var typeName=jsons[i].data.value;
744                $("#"+typeName).removeAttr('disabled');
745            } catch (e) { }
746        }
747    }).on("error",function (error) {
748        console.log(error);
749    });
750}
751function EQDataChange(select) {
752    var selectedItem=select.options.item(select.selectedIndex);
753    var EQurl='http'+selectedItem.getAttribute('data-EQURL');
754    $.ajax({
755        url: EQurl,
756        type: "GET",
757    }).done(function (res) {
758        var Info=res.results[0];
759        Info=Info.split('<!--= /image =-->')[1]
760        Info=Info.split('<!--= /comment =-->')[0]
761        Info=Info.replace('<h3>','<h3 style="text-align:center">');
762        Info=Info.replace('<!--= sindo table =-->','');
763        Info=Info.replace(/width="640"/g,'width="90%"');
764        Info=Info.replace(/style="/g,'style="text-align: center;');
765
766        $("#modalEQ").children().remove()
767        $('#modalEQ').append(Info+'<div style="text-align: center;">Copyright &copy;<a href="http://www.tenki.jp">日本気象協会</a> &copy;<a href="http://weather.livedoor.com/weather_hacks/rss_feed_list">livedoor天気情報</a> All rights reserved.</p></div>');
768        $('#modalEQ').append('<div style="text-align: center;"><select class="form-control" onchange="EQDataChange(this)" id="EQSelection"></select></div>');
769        for (var i=0;i<EQinfoArrays.length;i++) {
770            var j=EQinfoArrays[i].replace(' [ 最大震度 ] ',',');
771            j=j.replace(' [ 震源地 ] ',',');
772            $('#EQSelection').append('<option id="EQ'+i+'">'+j+'</option>');
773            document.getElementById('EQ'+i).setAttribute('data-EQURL',EQURLArrays[i]);
774        }
775    });
776}
777
778function RadioChange() {
779    switch ($('input[name=startPos]:checked').val()) {
780        case 'NowPos':
781            $('#MapCenterRadio').removeClass('active');
782            $('#InputsRadio').removeClass('active');
783            $('#NowPosRadio').addClass('active');
784            break;
785        case 'MapCenter':
786            $('#NowPosRadio').removeClass('active');
787            $('#InputsRadio').removeClass('active');
788            $('#MapCenterRadio').addClass('active');
789            break;
790        case 'Inputs':
791            $('#MapCenterRadio').removeClass('active');
792            $('#NowPosRadio').removeClass('active');
793            $('#InputsRadio').addClass('active');
794            break;
795    }
796    NowPosUpdate();
797}
798function MovemapCenter() {
799    var placeStr=$('#userPlace').val();
800    var geocoder=new google.maps.Geocoder();
801    geocoder.geocode(
802      {
803          'address': placeStr,
804          'region': 'jp'
805      },
806      function (results,status) {
807          if (status==google.maps.GeocoderStatus.OK) {
808              map.setCenter(results[0].geometry.location);
809          }
810      }
811    );
812}
813function NowPosUpdate() {
814    switch ($('input[name=startPos]:checked').val()) {
815        case 'NowPos':
816            NowPos=SetGPSposition();
817            break;
818        case 'MapCenter':
819            NowPos=map.getCenter();
820            break;
821        case 'Inputs':
822            var placeStr=$('#userPlace').val();
823            if (placeStr==null) {
824                alert('入力されていません。\n地図の中央をスタート地点にします。');
825                $('input[name=startPos]').val(['MapCenter']);
826                RadioChange();
827            }
828            var geocoder=new google.maps.Geocoder();
829            geocoder.geocode(
830              {
831                  'address': placeStr,
832                  'region': 'jp'
833              },
834              function (results,status) {
835                  if (status==google.maps.GeocoderStatus.OK) {
836                      NowPos=(results[0].geometry.location);
837                  } else {
838                      alert('見つかりませんでした。\n地図の中央をスタート地点にします。');
839                      $('input[name=startPos]').val(['MapCenter']);
840                      RadioChange();
841                  }
842              }
843            );
844            break;
845    }
846}
847function SetGPSposition() {
848    var ret=map.getCenter();;
849    if (TriTypePos[0]==null) {
850        if (window.navigator.geolocation) {
851            try {
852                window.navigator.geolocation.getCurrentPosition(
853                    function (position) {
854                        latlng=new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
855                        TriTypePos[0]=latlng;
856                        ret=TriTypePos[0];
857                    },
858                    function (error) {
859                        alert('位置情報を取得できませんでした。\n地図の中央をスタート地点にします。');
860                        $('input[name=startPos]').val(['MapCenter']);
861                        RadioChange();
862                    },
863                    {
864                        enableHighAccuracy: true,
865                        timeout: 1000,
866                        maximumAge: 60000
867                    }
868                );
869            } catch (e) {
870                console.log(e);
871            }
872        } else {
873            alert('ブラウザが位置情報取得に対応していません\n地図の中央をスタート地点にします。');
874            $('input[name=startPos]').val(['MapCenter']);
875            RadioChange();
876        }
877        return ret;
878    }
879    return TriTypePos[0];
880}
881
882function RootSelect(Targets,index) {
883    var directionsService=new google.maps.DirectionsService();
884    var dist=Number.MAX_VALUE,dis;
885    $.each(Targets,function (i,data) {
886        var request={
887            origin: NowPos,
888            destination: new google.maps.LatLng(data.lat.value,data.long.value),
889            avoidHighways: true,
890            avoidTolls: true,
891            travelMode: google.maps.DirectionsTravelMode.WALKING
892        }
893        directionsService.route(request,function (result,status) {
894            if (status==google.maps.DirectionsStatus.OK) {
895                dis=result.routes[0].legs[0].distance.value;
896
897                if (dis<dist) {
898                    distination=new google.maps.LatLng(data.lat.value,data.long.value);
899                    dist=dis;
900                    directionsDisplay[index].setMap(null);
901                    directionsDisplay[index].setDirections(result);
902                    directionsDisplay[index].setMap(map);
903                }
904            } else {
905                console.log(i.toString()+status);
906            }
907        });
908    });
909}
910function RootSelect4Georsspoint(Targets,index) {
911    var directionsService=new google.maps.DirectionsService();
912    var dist=Number.MAX_VALUE,dis;
913    $.each(Targets,function (i,data) {
914        var latlngTMP=data.georsspoint.value;
915        var latlngArray=latlngTMP.split(" - ");
916        var request={
917            origin: NowPos,
918            destination: new google.maps.LatLng(latlngArray[0],latlngArray[1]),
919            avoidHighways: true,
920            avoidTolls: true,
921            travelMode: google.maps.DirectionsTravelMode.WALKING
922        }
923        directionsService.route(request,function (result,status) {
924            if (status==google.maps.DirectionsStatus.OK) {
925                dis=result.routes[0].legs[0].distance.value;
926
927                if (dis<dist) {
928                    dist=dis;
929                    distination=new google.maps.LatLng(data.lat.value,data.long.value);
930                    directionsDisplay[index].setDirections(null);
931                    directionsDisplay[index].setMap(null);
932                    directionsDisplay[index].setDirections(result);
933                    directionsDisplay[index].setMap(map);
934                }
935
936            } else {
937                console.log(i.toString()+status);
938            }
939        });
940    });
941}
942function TargetSortByDistance(json) {
943    NowPosUpdate();
944    json.sort(function (a,b) {
945        var aPos=new google.maps.LatLng(a.lat.value,a.long.value);
946        var bPos=new google.maps.LatLng(b.lat.value,b.long.value);
947        var aDis=google.maps.geometry.spherical.computeDistanceBetween(NowPos,aPos);
948        var bDis=google.maps.geometry.spherical.computeDistanceBetween(NowPos,bPos);
949        if (aDis<bDis) {
950            return -1;
951        }
952        if (aDis>bDis) {
953            return 1;
954        }
955        return 0;
956    });
957    return json;
958}
959function TargetSortByDistance4Georsspoint(json) {
960    NowPosUpdate();
961    json.sort(function (a,b) {
962        var latlngTMP=a.georsspoint.value;
963        var latlngArray=latlngTMP.split(" - ");
964        var aPos=new google.maps.LatLng(latlngArray[0],latlngArray[1]);
965        latlngTMP=b.georsspoint.value;
966        latlngArray=latlngTMP.split(" - ");
967        var bPos=new google.maps.LatLng(latlngArray[0],latlngArray[1]);
968        var aDis=google.maps.geometry.spherical.computeDistanceBetween(NowPos,aPos);
969        var bDis=google.maps.geometry.spherical.computeDistanceBetween(NowPos,bPos);
970        if (aDis<bDis) {
971            return -1;
972        }
973        if (aDis>bDis) {
974            return 1;
975        }
976        return 0;
977    });
978    return json;
979}
980function RouteChange(latlong) {
981    var directionsService=new google.maps.DirectionsService();
982    distination=new google.maps.LatLng(latlong[0],latlong[1]);
983    var request={
984        origin: NowPos,
985        destination: distination,
986        avoidHighways: true,
987        avoidTolls: true,
988        travelMode: google.maps.DirectionsTravelMode.WALKING
989    }
990    directionsService.route(request,function (result,status) {
991        if (status==google.maps.DirectionsStatus.OK) {
992            directionsDisplay[latlong[2]].setMap(null);
993            directionsDisplay[latlong[2]].setDirections(result);
994            directionsDisplay[latlong[2]].setMap(map);
995        } else {
996            console.log(i.toString()+status);
997        }
998    });
999}
1000
1001function EarthQuakeInfoGet2() {
1002    $.ajax({
1003        url: 'http://weather.livedoor.com/forecast/rss/earthquake.xml'+"?"+(new Date()).getTime(),
1004        type: 'GET',
1005        dataType: 'xml',
1006        timeout: 5000,
1007        success: function (xml,status) {
1008            if (status==='success') {
1009                try {
1010                    xml=$.parseXML(xml["responseText"]);
1011                    var item=$(xml).find('html').find('body').find('rss').find('channel').find('provider').find('provider').children(':nth-child(2)').find('description');
1012                    var EQinfos=$(xml).find('html').find('body').find('rss').find('channel').find('provider').find('provider').children();
1013                    for (var i=1;i<EQinfos.length;i++) {
1014                        if (userAgent.indexOf('rident/7.0')!=-1||userAgent.indexOf('ndroid 4.')!=-1) {
1015                            EQinfoArrays[EQinfoArrays.length]=EQinfos[i].textContent.split('http')[0];
1016                            EQURLArrays[EQURLArrays.length]=EQinfos[i].textContent.split('http')[1].split('r=rss')[0]+'r=rss';
1017                        } else {
1018                            EQinfoArrays[EQinfoArrays.length]=EQinfos[i].innerHTML.split('http')[0];
1019                            EQURLArrays[EQURLArrays.length]=EQinfos[i].innerHTML.split('http')[1].split('r=rss')[0]+'r=rss';
1020                        }
1021                    }
1022                    var EQinfoURL=$(xml).find('html').find('body').find('rss').find('channel').find('provider').find('provider').children(':nth-child(2)')[0];
1023                    if (userAgent.indexOf('rident/7.0')!=-1||userAgent.indexOf('ndroid 4.')!=-1) {
1024                        EQinfoURL='http'+EQinfoURL.textContent.split('http')[1].split('r=rss')[0]+'r=rss';
1025                    } else {
1026                        EQinfoURL='http'+EQinfoURL.innerHTML.split('http')[1].split('r=rss')[0]+'r=rss';
1027                    }
1028
1029                    var infobar=document.getElementById("EQInfo");
1030                    if (userAgent.indexOf('rident/7.0')!=-1||userAgent.indexOf('ndroid 4.')!=-1) {
1031                        infobar.textContent=item[0].textContent;
1032                    } else {
1033                        infobar.textContent=item[0].innerHTML;
1034                    }
1035                } catch (e) {
1036                    alert("地震情報エラー:"+e.toString());
1037                }
1038            } else {
1039                alert("地震情報エラー:"+status);
1040            }
1041            EarthQuakeInfoWidth();
1042            EarthQuakeInfoMove();
1043            $.ajax({
1044                url: EQinfoURL,
1045                type: "GET",
1046            }).done(function (res) {
1047                var Info=res.results[0];
1048                Info=Info.split('<!--= /image =-->')[1]
1049                Info=Info.split('<!--= /comment =-->')[0]
1050                Info=Info.replace('<h3>','<h3 style="text-align:center">');
1051                Info=Info.replace('<!--= sindo table =-->','');
1052                Info=Info.replace(/width="640"/g,'width="90%"');
1053                Info=Info.replace(/style="/g,'style="text-align: center;');
1054
1055
1056                $('#modalEQ').append(Info+'<div style="text-align: center;">Copyright &copy;<a href="http://www.tenki.jp">日本気象協会</a> &copy;<a href="http://weather.livedoor.com/weather_hacks/rss_feed_list">livedoor天気情報</a> All rights reserved.</p></div>');
1057                $('#modalEQ').append('<div style="text-align: center;"><select class="form-control" onchange="EQDataChange(this)" id="EQSelection"></select></div>');
1058                for (var i=0;i<EQinfoArrays.length;i++) {
1059                    var j=EQinfoArrays[i].replace(' [ 最大震度 ] ',',');
1060                    j=j.replace(' [ 震源地 ] ',',');
1061                    $('#EQSelection').append('<option id="EQ'+i+'">'+j+'</option>');
1062                    document.getElementById('EQ'+i).setAttribute('data-EQURL',EQURLArrays[i]);
1063                }
1064            });
1065        },
1066        error: function (err) {
1067            alert("地震情報エラー:"+err.statusText);
1068        }
1069    });
1070}
1071function EarthQuakeInfoCheck(str) {
1072    if (str=="") {
1073        return -1;
1074    }
1075    var infos=str.split(/\r\n|\r|\n/);
1076    for (var i=infos.length-1;i>=0;i--) {
1077        if (infos[i].match(/気象庁/)||!infos[i].match(/QUA/)) {
1078            continue;
1079        }
1080        return i;
1081    }
1082    return -1;
1083}
1084
1085function EarthQuakeInfoWidth() {
1086    var $txtBox=$("#EQInfo");
1087    width=getWidth($txtBox);
1088    if ((window.innerWidth-80)<width) {
1089        $("#EQInfo").css({ "width": (width).toString()+"px" });
1090    } else {
1091        $("#EQInfo").css({ "width": (window.innerWidth-80).toString()+"px" });
1092    }
1093}
1094function EarthQuakeInfoMove() {
1095    var $txtBox=$("#EQInfo");
1096    $("#EQInfo").animate({
1097        left: (-1*(getWidth($txtBox)+50)).toString()+"px"
1098    },10000,'linear').animate({
1099        left: "110%"
1100    },0,'linear')
1101    setTimeout("EarthQuakeInfoMove()",10000);
1102}
1103function getWidth($txt,opt_max) {
1104    var $body=$(document.body),
1105    $dummyWrapper=$('<div class="testArea">'),
1106    $dummy=$('<span class="testText">'),
1107    width;
1108
1109    $dummyWrapper.css({
1110        position: 'absolute',
1111        top: 0,left: 0,
1112        width: opt_max||9999,
1113        'z-index': -1
1114    });
1115
1116    $dummy.text($txt.text());
1117    $dummy.css({
1118        color: 'transparent',
1119        'letter-spacing': $txt.css('letter-spacing')
1120    });
1121
1122    $body.append($dummyWrapper.append($dummy));
1123
1124    width=$dummy.width();
1125
1126    setTimeout(function () {
1127        $dummyWrapper.remove();
1128    },0);
1129
1130    return width;
1131}
1132
1133function Scheme() {
1134    if (userAgent.indexOf('iPhone')>-1) {
1135        var scheme='comgooglemaps-x-callback://?saddr='+NowPos.lat()+','+NowPos.lng()+'&daddr='+distination.lat()+','+distination.lng()+'&directionsmode=walking';
1136        window.location.href=scheme;
1137    } else {
1138        var scheme='http://maps.google.com?saddr='+NowPos.lat()+','+NowPos.lng()+'&daddr='+distination.lat()+','+distination.lng()+'&directionsmode=walking';
1139        window.location.href=scheme;
1140    }
1141}
1142
1143//GoogleAnalytics
vendor: 373 bytes, lines 1143-1151
1143
1144(function (i,s,o,g,r,a,m) {
1145    i['GoogleAnalyticsObject']=r; i[r]=i[r]||function () {
1146        (i[r].q=i[r].q||[]).push(arguments)
1147    },i[r].l=1*new Date(); a=s.createElement(o),
1148    m=s.getElementsByTagName(o)[0]; a.async=1; a.src=g; m.parentNode.insertBefore(a,m)
1149})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
1150
1151ga('create','
1151UA-51356556-7
vendor: 34 bytes, lines 1151-1152
1151','auto');
1152ga('send','pageview');

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.