const noteLayer = map.noteLayer;
let notes = {};
- var noteIcons = {
- "new": L.icon({
- iconUrl: OSM.NEW_NOTE_MARKER,
- iconSize: [25, 40],
- iconAnchor: [12, 40]
- }),
- "open": L.icon({
- iconUrl: OSM.OPEN_NOTE_MARKER,
- iconSize: [25, 40],
- iconAnchor: [12, 40]
- }),
- "closed": L.icon({
- iconUrl: OSM.CLOSED_NOTE_MARKER,
- iconSize: [25, 40],
- iconAnchor: [12, 40]
- })
- };
-
noteLayer.on("add", () => {
loadNotes();
map.on("moveend", loadNotes);
});
function updateMarker(old_marker, feature) {
- var marker = old_marker;
+ let marker = old_marker;
if (marker) {
- marker.setIcon(noteIcons[feature.properties.status]);
+ marker.setIcon(OSM.getMarker({ icon: `${feature.properties.status}_NOTE_MARKER`, shadow: false, height: 40 }));
} else {
let title;
const description = feature.properties.comments[0];
}
marker = L.marker(feature.geometry.coordinates.reverse(), {
- icon: noteIcons[feature.properties.status],
+ icon: OSM.getMarker({ icon: `${feature.properties.status}_NOTE_MARKER`, shadow: false, height: 40 }),
title,
opacity: 0.8,
interactive: true
};
function loadNotes() {
- var bounds = map.getBounds();
- var size = bounds.getSize();
+ const bounds = map.getBounds();
+ const size = bounds.getSize();
if (size <= OSM.MAX_NOTE_REQUEST_AREA) {
- var url = "/api/" + OSM.API_VERSION + "/notes.json?bbox=" + bounds.toBBoxString();
+ const url = "/api/" + OSM.API_VERSION + "/notes.json?bbox=" + bounds.toBBoxString();
if (noteLoader) noteLoader.abort();
- noteLoader = $.ajax({
- url: url,
- success: success
- });
+ noteLoader = new AbortController();
+ fetch(url, { signal: noteLoader.signal })
+ .then(response => response.json())
+ .then(success)
+ .catch(() => {})
+ .finally(() => noteLoader = null);
}
function success(json) {
- var oldNotes = notes;
+ const oldNotes = notes;
notes = {};
for (const feature of json.features) {
- var marker = oldNotes[feature.properties.id];
+ const marker = oldNotes[feature.properties.id];
delete oldNotes[feature.properties.id];
notes[feature.properties.id] = updateMarker(marker, feature);
}
- for (var id in oldNotes) {
+ for (const id in oldNotes) {
noteLayer.removeLayer(oldNotes[id]);
}
-
- noteLoader = null;
}
}
};