fix josm remote

This commit is contained in:
Tykayn 2025-06-06 13:50:14 +02:00 committed by tykayn
parent 8bce5fe21c
commit ef42dba9dd
2 changed files with 57 additions and 17 deletions

View file

@ -63,11 +63,14 @@ function openInJOSM(map, map_is_loaded, osmElements) {
`select=${selectParams.join(',')}`;
// Utiliser le bouton caché pour ouvrir JOSM
const josmButton = document.getElementById('josmButton');
if (!josmButton) {
console.error('Le bouton JOSM n\'existe pas dans le DOM');
return;
}
josmButton.href = josmUrl;
josmButton.click();
}
// Créer un élément <a> temporaire
const tempLink = document.createElement('a');
tempLink.style.display = 'none';
document.body.appendChild(tempLink);
tempLink.href = josmUrl;
console.log('josmUrl', josmUrl);
tempLink.click();
document.body.removeChild(tempLink);
}

View file

@ -116,7 +116,8 @@
let mapElements = [];
let map_is_loaded = false;
let features = [];
let maplibre;
let map;
function getCompletionColor(completion) {
if (completion === undefined || completion === null) {
@ -239,6 +240,19 @@
});
}
function createJOSMQuery(elements){
let query = '';
elements.forEach(element => {
query += `${element.type}${element.id},`;
});
// Enlever la virgule finale
query = query.replace(/,$/, '');
console.log('josm query', query);
return query;
}
let josm_elements = [];
async function loadPlaces(map) {
map_is_loaded = false;
try {
@ -259,6 +273,8 @@
// Mettre à jour les cercles
features = [];
josm_elements = [];
data.elements.forEach(element => {
const lat = element.lat || (element.center && element.center.lat);
const lon = element.lon || (element.center && element.center.lon);
@ -277,6 +293,7 @@
center: [lon, lat] // Stocker le centre comme un tableau [lon, lat]
};
features.push(circle);
josm_elements.push(element);
}
});
@ -309,29 +326,49 @@
document.getElementById('maploader').classList.add('d-none');
}
}
function openJOSMQuery(map, query) {
const bounds = map.getBounds();
const josmUrl = `http://localhost:8111/load_object?` +
`objects=${query}`;
// Créer un élément <a> temporaire
const tempLink = document.createElement('a');
tempLink.style.display = 'none';
document.body.appendChild(tempLink);
console.log('josmUrl', josmUrl);
tempLink.href = josmUrl;
tempLink.click();
document.body.removeChild(tempLink);
}
function openInJOSM() {
const selectedElements = document.querySelectorAll('input[type="checkbox"]:checked');
if (selectedElements.length === 0) {
if (josm_elements.length === 0) {
alert('Veuillez sélectionner au moins un élément');
return;
}
const query = createJOSMQuery(josm_elements);
console.log('map', map);
openJOSMQuery(map, query);
const osmElements = Array.from(selectedElements).map(checkbox => {
return JSON.parse(checkbox.value);
});
window.openInJOSM(map, map_is_loaded, osmElements);
}
document.addEventListener('DOMContentLoaded', function() {
console.log('DOMContentLoaded');
const map = new maplibregl.Map({
maplibre = new maplibregl.Map({
container: 'map',
style: 'https://api.maptiler.com/maps/streets-v2/style.json?key={{ maptiler_token }}',
center: [2.3488, 48.8534],
zoom: 12
});
map = maplibre;
document.getElementById('openInJOSM').addEventListener('click', openInJOSM);