diff --git a/map.js b/map.js new file mode 100644 index 0000000..9f105ed --- /dev/null +++ b/map.js @@ -0,0 +1,54 @@ +document.addEventListener("DOMContentLoaded", () => { + var mymap = L.map("mymap").setView([38.919, 139.828], 12); + L.tileLayer('https://{s}.tile.osm.org/{z}/{x}/{y}.png', { + attribution: + '© OpenStreetMap contributors' + }).addTo(mymap); + + var markers = []; + var hana = L.icon({iconUrl: "Hana.png"}); + // 全マーカー記憶用 + var customLayer = L.geoJson(null, { + onEachFeature: (f, layer) => { + markers.push(layer); + layer.setIcon(hana); + // マーカーをすべて記憶しておく + let qn = markers.length; // 問題番号 + let fp = f.properties; + if (!fp) return + let place = fp.設置場所; + let q = fp.問題; + let A = fp.A, B = fp.B, C = fp.C, D = fp.D; + let answer = fp.正解; + let sel = ""; + for (let i of ["A", "B", "C", "D"]) { + sel += `
`; + } // classの値に正解を仕込んでおく + let bun = `${q}
`; + layer.bindPopup(bun); + } + }); + var gj = omnivore.csv("aedquiz.csv", null, customLayer).addTo(mymap); + gj.on("ready", () => { + // popup内のHTMLは当初文書DOMには入らない + // マーカーがクリックされてから始めて配備されるので + // DOMContentLoadedのタイミングで document.querySelectorAll しても + // 見つからない。popup内の文が準備OKになった contentupdate + // イベントで呼んでもらって click イベントを仕掛ける。 + for (let m of markers) { // 記録済みの全マーカーに対して繰り返す + m._popup.on("contentupdate", (e) => { + for (let inp of document.querySelectorAll("input")) { + inp.addEventListener("click", (e) => { + let cls=inp.getAttribute("class"), + ans=inp.value, + res=document.getElementById("result"); + res.textContent = cls==ans ? "正解!!" : "..."; + }); + } + }); + } + }); +}, false);