Newer
Older
2021-yuuji / polyload.js
function myInit(e) {
    /* 北緯38.891度, 東経139.824度, ズームレベル16 で地図表示 */
    var mymap = L.map("map").setView([38.891, 139.824], 14);
    var osm = L.tileLayer('//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
	attribution:
	'&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(mymap);
    L.control.scale().addTo(mymap);
    var laycon = L.control.layers({"OSM": osm}).addTo(mymap);
    var lg = L.featureGroup();
    lg.addTo(mymap);
    let urlbase = "https://www.yatex.org/gitbucket/SKIP/bird-2021/raw/master/geo-material"

    function addPols(pat) {
	var reg = new RegExp(pat);
	console.log("SEARCH: "+pat);
	for (let l of lg.getLayers()) lg.removeLayer(l);
	laycon.removeLayer(lg, pat);	//前回足したかもしれないので除去
	laycon.addOverlay(lg, pat);	//オーバーレイを追加
	lg.name = 'foo';

	var files = ["city", "kaigan", "kawa", "mori", "minato", "park"];
	for (let m of files) {
	    fetch(urlbase + "/" + m +".geojson").then((resp) => {
	    // fetch(m +".geojson").then((resp) => {
		console.log("Loading "+m+", "+resp.ok);
		if (resp.ok) return resp.text();	// HTTPレスポンスから文字列のみ返す
		throw new Error();
	    }).then((txt) => {		// それを txt として受け取る
		if (!txt) return;
		let j = JSON.parse(txt);
		let name = j.features[0].properties.name;
		if (name && name.match(reg))
		    lg.addLayer(L.geoJson(j));
	    })// .catch ((r) => { /* nothing */ })
	}
    }
    document.getElementById("placetype").addEventListener("change",(e)=>{
	addPols(e.target.value);
    });
}
document.addEventListener("DOMContentLoaded", myInit, false);