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:
'© <a href="http://osm.org/copyright">OpenStreetMap</a> 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 += `<li><label class="quiz-button">
<input name="q" type="radio" value="${answer}" class="${i}">
<span class="quiz-text">${fp[i]}</span></label></li>`;
} // classの値に正解を仕込んでおく
let bun = `<h2>${place}</h2>\n<p>${q}<p><ul id="q${qn}">${sel}
<p id="result"> </p>`;
layer.bindPopup(bun);
}
});
var gj = omnivore.csv('R5csv.csv' , 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 ? "正解!!" : "...";
localStorage = setItem('正解!!', '...',getfullquiz());
localStorage.saveKey = ("正解!");
});
}
});
}
});
}, false);