forked from edward/owl-map
Code formatting with prettier
This commit is contained in:
parent
5cad18c393
commit
2bed4b86a3
340
static/js/map.js
340
static/js/map.js
|
@ -1,9 +1,9 @@
|
||||||
'use strict';
|
"use strict";
|
||||||
|
|
||||||
var options = {};
|
var options = {};
|
||||||
if (start_lat || start_lng) {
|
if (start_lat || start_lng) {
|
||||||
start_lat = start_lat.toFixed(5);
|
start_lat = start_lat.toFixed(5);
|
||||||
start_lng = start_lng.toFixed(5);
|
start_lng = start_lng.toFixed(5);
|
||||||
options = {
|
options = {
|
||||||
center: [start_lat, start_lng],
|
center: [start_lat, start_lng],
|
||||||
zoom: zoom,
|
zoom: zoom,
|
||||||
|
@ -24,133 +24,134 @@ var isa_card = document.getElementById("isa-card");
|
||||||
var isa_labels = {};
|
var isa_labels = {};
|
||||||
var connections = {};
|
var connections = {};
|
||||||
map.addLayer(group);
|
map.addLayer(group);
|
||||||
map.zoomControl.setPosition('topright');
|
map.zoomControl.setPosition("topright");
|
||||||
|
|
||||||
var blueMarker = L.ExtraMarkers.icon({
|
var blueMarker = L.ExtraMarkers.icon({
|
||||||
icon: 'fa-wikidata',
|
icon: "fa-wikidata",
|
||||||
markerColor: 'blue',
|
markerColor: "blue",
|
||||||
shape: 'circle',
|
shape: "circle",
|
||||||
prefix: 'fa',
|
prefix: "fa",
|
||||||
});
|
});
|
||||||
|
|
||||||
var greenMarker = L.ExtraMarkers.icon({
|
var greenMarker = L.ExtraMarkers.icon({
|
||||||
icon: 'fa-wikidata',
|
icon: "fa-wikidata",
|
||||||
markerColor: 'green',
|
markerColor: "green",
|
||||||
shape: 'circle',
|
shape: "circle",
|
||||||
prefix: 'fa',
|
prefix: "fa",
|
||||||
});
|
});
|
||||||
|
|
||||||
var redMarker = L.ExtraMarkers.icon({
|
var redMarker = L.ExtraMarkers.icon({
|
||||||
icon: 'fa-wikidata',
|
icon: "fa-wikidata",
|
||||||
markerColor: 'red',
|
markerColor: "red",
|
||||||
shape: 'circle',
|
shape: "circle",
|
||||||
prefix: 'fa',
|
prefix: "fa",
|
||||||
});
|
});
|
||||||
|
|
||||||
var osmYellowMarker = L.ExtraMarkers.icon({
|
var osmYellowMarker = L.ExtraMarkers.icon({
|
||||||
icon: 'fa-map',
|
icon: "fa-map",
|
||||||
markerColor: 'yellow',
|
markerColor: "yellow",
|
||||||
shape: 'square',
|
shape: "square",
|
||||||
prefix: 'fa',
|
prefix: "fa",
|
||||||
});
|
});
|
||||||
|
|
||||||
var osmOrangeMarker = L.ExtraMarkers.icon({
|
var osmOrangeMarker = L.ExtraMarkers.icon({
|
||||||
icon: 'fa-map',
|
icon: "fa-map",
|
||||||
markerColor: 'orange',
|
markerColor: "orange",
|
||||||
shape: 'square',
|
shape: "square",
|
||||||
prefix: 'fa',
|
prefix: "fa",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
if (!start_lat || !start_lng) {
|
if (!start_lat || !start_lng) {
|
||||||
map.fitBounds([[49.85,-10.5], [58.75, 1.9]]);
|
map.fitBounds([
|
||||||
|
[49.85, -10.5],
|
||||||
|
[58.75, 1.9],
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add OpenStreetMap layer
|
// Add OpenStreetMap layer
|
||||||
var osm = L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { maxZoom: 19 });
|
var osm = L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
|
||||||
|
maxZoom: 19,
|
||||||
|
});
|
||||||
|
|
||||||
osm.addTo(map);
|
osm.addTo(map);
|
||||||
|
|
||||||
function check_items(items) {
|
function check_items(items) {
|
||||||
if (items.length === 0)
|
if (items.length === 0) return;
|
||||||
return;
|
|
||||||
|
|
||||||
var item = items.shift();
|
var item = items.shift();
|
||||||
var qid = item.qid;
|
var qid = item.qid;
|
||||||
|
|
||||||
var markers_url = `/api/1/item/${qid}`;
|
var markers_url = `/api/1/item/${qid}`;
|
||||||
axios.get(markers_url).then(response => {
|
axios.get(markers_url).then((response) => {
|
||||||
// console.log(response.data, item);
|
// console.log(response.data, item);
|
||||||
response.data.info.forEach(osm => {
|
response.data.info.forEach((osm) => {
|
||||||
var icon = osmYellowMarker;
|
var icon = osmYellowMarker;
|
||||||
var marker = L.marker(osm.centroid, {title: osm.name, icon: icon});
|
var marker = L.marker(osm.centroid, { title: osm.name, icon: icon });
|
||||||
var popup = `
|
var popup = `
|
||||||
<p>
|
<p>
|
||||||
<a href="${osm.url}" target="_blank">${osm.identifier}</a>: ${osm.name}
|
<a href="${osm.url}" target="_blank">${osm.identifier}</a>: ${osm.name}
|
||||||
</p>`
|
</p>`;
|
||||||
marker.bindPopup(popup);
|
marker.bindPopup(popup);
|
||||||
marker.addTo(group);
|
marker.addTo(group);
|
||||||
|
|
||||||
});
|
});
|
||||||
item.markers.forEach(marker_data => {
|
item.markers.forEach((marker_data) => {
|
||||||
var marker = marker_data.marker;
|
var marker = marker_data.marker;
|
||||||
var icon = response.data.tagged ? greenMarker : redMarker;
|
var icon = response.data.tagged ? greenMarker : redMarker;
|
||||||
marker.setIcon(icon);
|
marker.setIcon(icon);
|
||||||
|
|
||||||
response.data.info.forEach(osm => {
|
response.data.info.forEach((osm) => {
|
||||||
var path = [osm.centroid, marker_data];
|
var path = [osm.centroid, marker_data];
|
||||||
var polyline = L.polyline(path, {color: 'green'}).addTo(map);
|
var polyline = L.polyline(path, { color: "green" }).addTo(map);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
if (items.length)
|
if (items.length) check_items(items);
|
||||||
check_items(items);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_wikidata() {
|
function update_wikidata() {
|
||||||
if (Object.keys(wikidata_items).length === 0 || Object.keys(osm_objects).length === 0) {
|
if (
|
||||||
|
Object.keys(wikidata_items).length === 0 ||
|
||||||
|
Object.keys(osm_objects).length === 0
|
||||||
|
) {
|
||||||
if (wikidata_loaded && osm_loaded) {
|
if (wikidata_loaded && osm_loaded) {
|
||||||
loading.classList.add("visually-hidden");
|
loading.classList.add("visually-hidden");
|
||||||
load_text.classList.remove("visually-hidden");
|
load_text.classList.remove("visually-hidden");
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const qid in osm_objects) {
|
for (const qid in osm_objects) {
|
||||||
var osm_list = osm_objects[qid];
|
var osm_list = osm_objects[qid];
|
||||||
|
|
||||||
var item = wikidata_items[qid];
|
var item = wikidata_items[qid];
|
||||||
if (!item) {
|
if (!item) {
|
||||||
osm_list.forEach(osm => {
|
osm_list.forEach((osm) => {
|
||||||
osm.marker.setIcon(osmOrangeMarker);
|
osm.marker.setIcon(osmOrangeMarker);
|
||||||
});
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.lines === undefined)
|
|
||||||
item.lines = [];
|
|
||||||
item.markers.forEach(marker_data => {
|
|
||||||
marker_data.marker.setIcon(greenMarker);
|
|
||||||
osm_list.forEach(osm => {
|
|
||||||
var path = [osm.centroid, marker_data];
|
|
||||||
var polyline = L.polyline(path, {color: 'green'}).addTo(group);
|
|
||||||
item.lines.push(polyline);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.lines === undefined) item.lines = [];
|
||||||
|
item.markers.forEach((marker_data) => {
|
||||||
|
marker_data.marker.setIcon(greenMarker);
|
||||||
|
osm_list.forEach((osm) => {
|
||||||
|
var path = [osm.centroid, marker_data];
|
||||||
|
var polyline = L.polyline(path, { color: "green" }).addTo(group);
|
||||||
|
item.lines.push(polyline);
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
for (const qid in wikidata_items) {
|
for (const qid in wikidata_items) {
|
||||||
if (osm_objects[qid])
|
if (osm_objects[qid]) continue;
|
||||||
continue;
|
var item = wikidata_items[qid];
|
||||||
var item = wikidata_items[qid];
|
item.markers.forEach((marker_data) => {
|
||||||
item.markers.forEach(marker_data => {
|
marker_data.marker.setIcon(redMarker);
|
||||||
marker_data.marker.setIcon(redMarker);
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
loading.classList.add("visually-hidden");
|
loading.classList.add("visually-hidden");
|
||||||
load_text.classList.remove("visually-hidden");
|
load_text.classList.remove("visually-hidden");
|
||||||
}
|
}
|
||||||
|
|
||||||
function isa_only(e) {
|
function isa_only(e) {
|
||||||
|
@ -158,7 +159,7 @@ function isa_only(e) {
|
||||||
|
|
||||||
var this_id = e.target.parentNode.childNodes[0].id;
|
var this_id = e.target.parentNode.childNodes[0].id;
|
||||||
|
|
||||||
var checkbox_list = document.getElementsByClassName('isa-checkbox');
|
var checkbox_list = document.getElementsByClassName("isa-checkbox");
|
||||||
|
|
||||||
for (const checkbox of checkbox_list) {
|
for (const checkbox of checkbox_list) {
|
||||||
checkbox.checked = checkbox.id == this_id;
|
checkbox.checked = checkbox.id == this_id;
|
||||||
|
@ -169,7 +170,7 @@ function isa_only(e) {
|
||||||
|
|
||||||
function show_all_isa(e) {
|
function show_all_isa(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var checkbox_list = document.getElementsByClassName('isa-checkbox');
|
var checkbox_list = document.getElementsByClassName("isa-checkbox");
|
||||||
for (const checkbox of checkbox_list) {
|
for (const checkbox of checkbox_list) {
|
||||||
checkbox.checked = true;
|
checkbox.checked = true;
|
||||||
}
|
}
|
||||||
|
@ -178,20 +179,22 @@ function show_all_isa(e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkbox_change() {
|
function checkbox_change() {
|
||||||
var checkbox_list = document.getElementsByClassName('isa-checkbox');
|
var checkbox_list = document.getElementsByClassName("isa-checkbox");
|
||||||
var ticked = [];
|
var ticked = [];
|
||||||
for (const checkbox of checkbox_list) {
|
for (const checkbox of checkbox_list) {
|
||||||
if (checkbox.checked) {
|
if (checkbox.checked) {
|
||||||
ticked.push(checkbox.id.substr(4));
|
ticked.push(checkbox.id.substr(4));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const qid in wikidata_items) {
|
for (const qid in wikidata_items) {
|
||||||
var item = wikidata_items[qid];
|
var item = wikidata_items[qid];
|
||||||
const item_isa_list = wikidata_items[qid]['isa_list'];
|
const item_isa_list = wikidata_items[qid]["isa_list"];
|
||||||
const intersection = ticked.filter(isa_qid => item_isa_list.includes(isa_qid));
|
const intersection = ticked.filter((isa_qid) =>
|
||||||
|
item_isa_list.includes(isa_qid)
|
||||||
|
);
|
||||||
if (item.lines) {
|
if (item.lines) {
|
||||||
item.lines.forEach(line => {
|
item.lines.forEach((line) => {
|
||||||
if (intersection.length) {
|
if (intersection.length) {
|
||||||
line.addTo(group);
|
line.addTo(group);
|
||||||
} else {
|
} else {
|
||||||
|
@ -200,7 +203,7 @@ function checkbox_change() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
item.markers.forEach(marker_data => {
|
item.markers.forEach((marker_data) => {
|
||||||
var marker = marker_data.marker;
|
var marker = marker_data.marker;
|
||||||
if (intersection.length) {
|
if (intersection.length) {
|
||||||
marker.addTo(group);
|
marker.addTo(group);
|
||||||
|
@ -209,8 +212,8 @@ function checkbox_change() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(osm_objects[qid]) {
|
if (osm_objects[qid]) {
|
||||||
osm_objects[qid].forEach(osm => {
|
osm_objects[qid].forEach((osm) => {
|
||||||
if (intersection.length) {
|
if (intersection.length) {
|
||||||
osm.marker.addTo(group);
|
osm.marker.addTo(group);
|
||||||
} else {
|
} else {
|
||||||
|
@ -219,8 +222,8 @@ function checkbox_change() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(items[qid]) {
|
if (items[qid]) {
|
||||||
items[qid].geojson.forEach(geojson => {
|
items[qid].geojson.forEach((geojson) => {
|
||||||
if (intersection.length) {
|
if (intersection.length) {
|
||||||
geojson.addTo(map);
|
geojson.addTo(map);
|
||||||
} else {
|
} else {
|
||||||
|
@ -234,34 +237,36 @@ function checkbox_change() {
|
||||||
function set_isa_list(isa_count) {
|
function set_isa_list(isa_count) {
|
||||||
isa_card.classList.remove("visually-hidden");
|
isa_card.classList.remove("visually-hidden");
|
||||||
var isa_list = document.getElementById("isa-list");
|
var isa_list = document.getElementById("isa-list");
|
||||||
isa_list.innerHTML = '';
|
isa_list.innerHTML = "";
|
||||||
isa_count.forEach(isa => {
|
isa_count.forEach((isa) => {
|
||||||
isa_labels[isa.qid] = isa.label;
|
isa_labels[isa.qid] = isa.label;
|
||||||
var isa_id = `isa-${isa.qid}`;
|
var isa_id = `isa-${isa.qid}`;
|
||||||
var e = document.createElement('div');
|
var e = document.createElement("div");
|
||||||
e.setAttribute('class', 'isa-item');
|
e.setAttribute("class", "isa-item");
|
||||||
|
|
||||||
var checkbox = document.createElement('input');
|
var checkbox = document.createElement("input");
|
||||||
checkbox.setAttribute('type', 'checkbox');
|
checkbox.setAttribute("type", "checkbox");
|
||||||
checkbox.setAttribute('checked', 'checked');
|
checkbox.setAttribute("checked", "checked");
|
||||||
checkbox.setAttribute('id', isa_id);
|
checkbox.setAttribute("id", isa_id);
|
||||||
checkbox.setAttribute('class', 'isa-checkbox');
|
checkbox.setAttribute("class", "isa-checkbox");
|
||||||
checkbox.onchange = checkbox_change;
|
checkbox.onchange = checkbox_change;
|
||||||
e.appendChild(checkbox);
|
e.appendChild(checkbox);
|
||||||
|
|
||||||
e.appendChild(document.createTextNode(' '));
|
e.appendChild(document.createTextNode(" "));
|
||||||
|
|
||||||
var label = document.createElement('label');
|
var label = document.createElement("label");
|
||||||
label.setAttribute('for', isa_id);
|
label.setAttribute("for", isa_id);
|
||||||
var label_text = document.createTextNode(` ${isa.label} (${isa.qid}): ${isa.count} `);
|
var label_text = document.createTextNode(
|
||||||
|
` ${isa.label} (${isa.qid}): ${isa.count} `
|
||||||
|
);
|
||||||
label.appendChild(label_text);
|
label.appendChild(label_text);
|
||||||
|
|
||||||
e.appendChild(label);
|
e.appendChild(label);
|
||||||
e.appendChild(document.createTextNode(' '));
|
e.appendChild(document.createTextNode(" "));
|
||||||
|
|
||||||
var only = document.createElement('a');
|
var only = document.createElement("a");
|
||||||
only.setAttribute('href', '#');
|
only.setAttribute("href", "#");
|
||||||
var only_text = document.createTextNode('only');
|
var only_text = document.createTextNode("only");
|
||||||
only.appendChild(only_text);
|
only.appendChild(only_text);
|
||||||
only.onclick = isa_only;
|
only.onclick = isa_only;
|
||||||
e.appendChild(only);
|
e.appendChild(only);
|
||||||
|
@ -271,38 +276,37 @@ function set_isa_list(isa_count) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function add_wikidata_marker(item, marker_data) {
|
function add_wikidata_marker(item, marker_data) {
|
||||||
var icon = blueMarker;
|
var icon = blueMarker;
|
||||||
var label = `${item.label} (${item.qid})`
|
var label = `${item.label} (${item.qid})`;
|
||||||
var marker = L.marker(marker_data, {icon: icon});
|
var marker = L.marker(marker_data, { icon: icon });
|
||||||
// var tooltip = marker.bindTooltip(item.qid, {permanent: true, direction: 'bottom', opacity: 0.5});
|
// var tooltip = marker.bindTooltip(item.qid, {permanent: true, direction: 'bottom', opacity: 0.5});
|
||||||
var wd_url = 'https://www.wikidata.org/wiki/' + item.qid;
|
var wd_url = "https://www.wikidata.org/wiki/" + item.qid;
|
||||||
var popup = '<p><strong>Wikidata item</strong><br>'
|
var popup = "<p><strong>Wikidata item</strong><br>";
|
||||||
popup += `<a href="${wd_url}" target="_blank">${item.label}</a> (${item.qid})`
|
popup += `<a href="${wd_url}" target="_blank">${item.label}</a> (${item.qid})`;
|
||||||
if (item.description) {
|
if (item.description) {
|
||||||
popup += `<br>description: ${item.description}`
|
popup += `<br>description: ${item.description}`;
|
||||||
|
}
|
||||||
|
if (item.isa_list && item.isa_list.length) {
|
||||||
|
popup += "<br><strong>item type</strong>";
|
||||||
|
for (const [index, isa_qid] of item.isa_list.entries()) {
|
||||||
|
var isa_url = "https://www.wikidata.org/wiki/" + isa_qid;
|
||||||
|
var isa_label = isa_labels[isa_qid];
|
||||||
|
popup += `<br><a href="${isa_url}" target="_blank">${isa_label}</a> (${isa_qid})`;
|
||||||
}
|
}
|
||||||
if (item.isa_list && item.isa_list.length) {
|
}
|
||||||
popup += '<br><strong>item type</strong>'
|
if (item.image_list && item.image_list.length) {
|
||||||
for (const [index, isa_qid] of item.isa_list.entries()) {
|
popup += `<br><img src="/commons/${item.image_list[0]}">`;
|
||||||
var isa_url = 'https://www.wikidata.org/wiki/' + isa_qid;
|
}
|
||||||
var isa_label = isa_labels[isa_qid];
|
popup += "</p>";
|
||||||
popup += `<br><a href="${isa_url}" target="_blank">${isa_label}</a> (${isa_qid})`;
|
marker.bindPopup(popup);
|
||||||
}
|
marker.addTo(group);
|
||||||
}
|
marker_data.marker = marker;
|
||||||
if (item.image_list && item.image_list.length) {
|
|
||||||
popup += `<br><img src="/commons/${item.image_list[0]}">`;
|
|
||||||
}
|
|
||||||
popup += '</p>';
|
|
||||||
marker.bindPopup(popup);
|
|
||||||
marker.addTo(group);
|
|
||||||
marker_data.marker = marker;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function load_wikidata_items() {
|
function load_wikidata_items() {
|
||||||
var checkbox_list = document.getElementsByClassName('isa-checkbox');
|
var checkbox_list = document.getElementsByClassName("isa-checkbox");
|
||||||
|
|
||||||
for (const checkbox of checkbox_list)
|
for (const checkbox of checkbox_list) checkbox.checked = true;
|
||||||
checkbox.checked = true;
|
|
||||||
|
|
||||||
checkbox_change();
|
checkbox_change();
|
||||||
|
|
||||||
|
@ -312,18 +316,18 @@ function load_wikidata_items() {
|
||||||
var bounds = map.getBounds();
|
var bounds = map.getBounds();
|
||||||
console.log("map moved", bounds.toBBoxString());
|
console.log("map moved", bounds.toBBoxString());
|
||||||
|
|
||||||
var params = {bounds: bounds.toBBoxString()};
|
var params = { bounds: bounds.toBBoxString() };
|
||||||
var items_url = "/api/1/items";
|
var items_url = "/api/1/items";
|
||||||
|
|
||||||
axios.get(items_url, {params: params}).then(response => {
|
axios.get(items_url, { params: params }).then((response) => {
|
||||||
set_isa_list(response.data.isa_count);
|
set_isa_list(response.data.isa_count);
|
||||||
var items = response.data.items;
|
var items = response.data.items;
|
||||||
items.forEach(item => {
|
items.forEach((item) => {
|
||||||
if (item.qid in wikidata_items)
|
if (item.qid in wikidata_items) return;
|
||||||
return;
|
item.markers.forEach((marker_data) =>
|
||||||
item.markers.forEach(marker_data => add_wikidata_marker(item, marker_data));
|
add_wikidata_marker(item, marker_data)
|
||||||
wikidata_items[item.qid] = item;
|
);
|
||||||
|
wikidata_items[item.qid] = item;
|
||||||
});
|
});
|
||||||
|
|
||||||
wikidata_loaded = true;
|
wikidata_loaded = true;
|
||||||
|
@ -331,38 +335,35 @@ function load_wikidata_items() {
|
||||||
update_wikidata();
|
update_wikidata();
|
||||||
});
|
});
|
||||||
var osm_objects_url = "/api/1/osm";
|
var osm_objects_url = "/api/1/osm";
|
||||||
axios.get(osm_objects_url, {params: params}).then(response => {
|
axios.get(osm_objects_url, { params: params }).then((response) => {
|
||||||
console.log(`${response.data.duration} seconds`);
|
console.log(`${response.data.duration} seconds`);
|
||||||
response.data.objects.forEach(osm => {
|
response.data.objects.forEach((osm) => {
|
||||||
var qid = osm.wikidata;
|
var qid = osm.wikidata;
|
||||||
if (osm_objects[qid] === undefined)
|
if (osm_objects[qid] === undefined) osm_objects[qid] = [];
|
||||||
osm_objects[qid] = [];
|
|
||||||
osm_objects[qid].push(osm);
|
osm_objects[qid].push(osm);
|
||||||
|
|
||||||
var icon = osmYellowMarker;
|
var icon = osmYellowMarker;
|
||||||
var marker = L.marker(osm.centroid, {title: osm.name, icon: icon});
|
var marker = L.marker(osm.centroid, { title: osm.name, icon: icon });
|
||||||
osm.marker = marker;
|
osm.marker = marker;
|
||||||
var wd_url = 'https://www.wikidata.org/wiki/' + qid;
|
var wd_url = "https://www.wikidata.org/wiki/" + qid;
|
||||||
var popup = `
|
var popup = `
|
||||||
<p>
|
<p>
|
||||||
${osm.name}:
|
${osm.name}:
|
||||||
<a href="${osm.url}" target="_blank">${osm.identifier}</a>
|
<a href="${osm.url}" target="_blank">${osm.identifier}</a>
|
||||||
<br>
|
<br>
|
||||||
Wikidata tag: <a href="${wd_url}" target="_blank">${qid}</a>
|
Wikidata tag: <a href="${wd_url}" target="_blank">${qid}</a>
|
||||||
</p>`
|
</p>`;
|
||||||
marker.bindPopup(popup);
|
marker.bindPopup(popup);
|
||||||
marker.addTo(group);
|
marker.addTo(group);
|
||||||
|
|
||||||
if (osm.type != 'node' && osm.geojson) {
|
if (osm.type != "node" && osm.geojson) {
|
||||||
var mapStyle = {fillOpacity: 0};
|
var mapStyle = { fillOpacity: 0 };
|
||||||
var geojson = L.geoJSON(null, {style: mapStyle});
|
var geojson = L.geoJSON(null, { style: mapStyle });
|
||||||
geojson.addTo(map);
|
geojson.addTo(map);
|
||||||
geojson.addData(osm.geojson);
|
geojson.addData(osm.geojson);
|
||||||
|
|
||||||
if (items[qid] === undefined)
|
if (items[qid] === undefined) items[qid] = {};
|
||||||
items[qid] = {};
|
if (items[qid].geojson === undefined) items[qid].geojson = [];
|
||||||
if (items[qid].geojson === undefined)
|
|
||||||
items[qid].geojson = [];
|
|
||||||
|
|
||||||
items[qid].geojson.push(geojson);
|
items[qid].geojson.push(geojson);
|
||||||
}
|
}
|
||||||
|
@ -371,35 +372,32 @@ function load_wikidata_items() {
|
||||||
osm_loaded = true;
|
osm_loaded = true;
|
||||||
update_wikidata();
|
update_wikidata();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById("show-all-isa").onclick = show_all_isa;
|
||||||
|
|
||||||
};
|
var load_btn = document.getElementById("load-btn");
|
||||||
|
|
||||||
document.getElementById('show-all-isa').onclick = show_all_isa;
|
|
||||||
|
|
||||||
var load_btn = document.getElementById('load-btn');
|
|
||||||
load_btn.onclick = load_wikidata_items;
|
load_btn.onclick = load_wikidata_items;
|
||||||
|
|
||||||
var search_btn = document.getElementById('search-btn');
|
var search_btn = document.getElementById("search-btn");
|
||||||
var search_form = document.getElementById('search-form');
|
var search_form = document.getElementById("search-form");
|
||||||
search_form.onsubmit = function(e) {
|
search_form.onsubmit = function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var search_text = document.getElementById('search-text').value.trim();
|
var search_text = document.getElementById("search-text").value.trim();
|
||||||
if (!search_text)
|
if (!search_text) return;
|
||||||
return;
|
var params = { q: search_text };
|
||||||
var params = {q: search_text};
|
|
||||||
var search_url = "/api/1/search";
|
var search_url = "/api/1/search";
|
||||||
var search_results = document.getElementById('search-results');
|
var search_results = document.getElementById("search-results");
|
||||||
axios.get(search_url, {params: params}).then(response => {
|
axios.get(search_url, { params: params }).then((response) => {
|
||||||
search_results.innerHTML = '';
|
search_results.innerHTML = "";
|
||||||
response.data.hits.forEach(hit => {
|
response.data.hits.forEach((hit) => {
|
||||||
var e = document.createElement('div');
|
var e = document.createElement("div");
|
||||||
var category = document.createTextNode(hit.category + ' ');
|
var category = document.createTextNode(hit.category + " ");
|
||||||
e.appendChild(category);
|
e.appendChild(category);
|
||||||
var a = document.createElement('a');
|
var a = document.createElement("a");
|
||||||
var lat = parseFloat(hit.lat).toFixed(5);
|
var lat = parseFloat(hit.lat).toFixed(5);
|
||||||
var lon = parseFloat(hit.lon).toFixed(5);
|
var lon = parseFloat(hit.lon).toFixed(5);
|
||||||
a.setAttribute('href', `/map/15/${lat}/${lon}`);
|
a.setAttribute("href", `/map/15/${lat}/${lon}`);
|
||||||
var link_text = document.createTextNode(hit.name);
|
var link_text = document.createTextNode(hit.name);
|
||||||
a.appendChild(link_text);
|
a.appendChild(link_text);
|
||||||
e.appendChild(a);
|
e.appendChild(a);
|
||||||
|
@ -407,9 +405,9 @@ search_form.onsubmit = function(e) {
|
||||||
});
|
});
|
||||||
console.log(response.data);
|
console.log(response.data);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
map.on('moveend', function (e) {
|
map.on("moveend", function (e) {
|
||||||
var zoom = map.getZoom();
|
var zoom = map.getZoom();
|
||||||
var c = map.getCenter();
|
var c = map.getCenter();
|
||||||
var lat = c.lat.toFixed(5);
|
var lat = c.lat.toFixed(5);
|
||||||
|
|
Loading…
Reference in a new issue