/* 公益大範囲: latlng(38.894697,139.817363), latlng(38.891412,139.820736)*/ document.addEventListener("DOMContentLoaded", () => { var bounds = [[38.894697,139.817363],[38.891412,139.820736]] var mymap = L.map("mymap").setView([38.893, 139.819],19); L.tileLayer('//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contrivutors' })//.addTo(mymap); L.imageOverlay("koeki-map.png", bounds).addTo(mymap); mymap.setMaxBounds(bounds); var gpsmarker = L.marker(mymap.getCenter()).addTo(mymap); gpsmarker.bindPopup("START").openPopup(); var nTrial = 10; var watchId = null; /*入力範囲はここから*/ let point = [[ 38.89411, 139.81853],[38.892467,139.819615], [38.893485,139.819827],[38.892850,139.819001]]; /*[緯度,経度]*/ let messege =[["こんにちは"],["ここは"],["公益大"],["です"]]; /*4つで1つの文章になるように*/ /*ここまで*/ let titen = []; let marker = []; let group = []; let judge = []; for (var x in point){ titen[x] = L.latLng(point[x]); marker[x] = L.marker(titen[x]); }; group = L.layerGroup(marker); group.addTo(mymap); function stopGPS() { console.log("watchId="+watchId); if (watchId != null) { navigator.geolocation.clearWatch(watchId); gpsmarker.setPopupContent("止めました"); } watchId = null; } function tryWatchGPS() { stopGPS(); watchId = navigator.geolocation.watchPosition( onSuccess,onError,{ macimumAge: 0, timeout: 3000, enavleHifhAccuracy: true}); } function onSuccess(pos) { var latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]); mymap.panTo(latlng); console.log(latlng); gpsmarker.setLatLng(latlng).setPopupContent( "ここは lat="+latlng.lat+", lng="+latlng.lng+"です" ).openPopup(); for (var i in titen) { if (latlng.distanceTo(titen[i]) < 30) { if (!judge[i]){ judge[i] = true; alert(messege[i]); let img = document.getElementById(`image${i}`); img.src = "sengoku.png"; marker[i]=L.marker(titen[i],{icon: L.spriteIcon('red'}).addTo(mymap); } } } } function onError(err) { restN = "あと"+(--nTrial)+"回試行します"; gpsmarker.setPopupContent("補足失敗:"+restN).openPopup(); if (nTrial <= 0) { navigator.geolocation.clearWatch(watchId); } } mymap.options.singleClickTimeout = 250; mymap.on('singleclick', function(e) { if (true){ latlng = L.latLng(e.latlng); gpsmarker.setLatLng(e.latlng); mymap.panTo(e.latlng); console.log(e.latlng); gpsmarker.setLatLng(e.latlng).setPopupContent( "lat="+latlng.lat+", lng="+latlng.lng+"" ).openPopup(); } for (var i in titen) { if (latlng.distanceTo(titen[i]) < 30) { if (!judge[i]){ judge[i] = true; alert(messege[i]); let img = document.getElementById(`image${i}`); img.src = "sengoku.png"; marker[i]=L.marker(titen[i],{icon: L.spriteIcon('red'}).addTo(mymap); } } } }); document.getElementById("start").addEventListener("click", tryWatchGPS); document.getElementById("stop").addEventListener("click", stopGPS); }, false);