fix josm remote
This commit is contained in:
parent
8bce5fe21c
commit
ef42dba9dd
2 changed files with 57 additions and 17 deletions
|
@ -63,11 +63,14 @@ function openInJOSM(map, map_is_loaded, osmElements) {
|
||||||
`select=${selectParams.join(',')}`;
|
`select=${selectParams.join(',')}`;
|
||||||
|
|
||||||
// Utiliser le bouton caché pour ouvrir JOSM
|
// Utiliser le bouton caché pour ouvrir JOSM
|
||||||
const josmButton = document.getElementById('josmButton');
|
// Créer un élément <a> temporaire
|
||||||
if (!josmButton) {
|
const tempLink = document.createElement('a');
|
||||||
console.error('Le bouton JOSM n\'existe pas dans le DOM');
|
tempLink.style.display = 'none';
|
||||||
return;
|
document.body.appendChild(tempLink);
|
||||||
}
|
tempLink.href = josmUrl;
|
||||||
josmButton.href = josmUrl;
|
|
||||||
josmButton.click();
|
console.log('josmUrl', josmUrl);
|
||||||
}
|
tempLink.click();
|
||||||
|
document.body.removeChild(tempLink);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -116,7 +116,8 @@
|
||||||
let mapElements = [];
|
let mapElements = [];
|
||||||
let map_is_loaded = false;
|
let map_is_loaded = false;
|
||||||
let features = [];
|
let features = [];
|
||||||
|
let maplibre;
|
||||||
|
let map;
|
||||||
|
|
||||||
function getCompletionColor(completion) {
|
function getCompletionColor(completion) {
|
||||||
if (completion === undefined || completion === null) {
|
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) {
|
async function loadPlaces(map) {
|
||||||
map_is_loaded = false;
|
map_is_loaded = false;
|
||||||
try {
|
try {
|
||||||
|
@ -259,6 +273,8 @@
|
||||||
|
|
||||||
// Mettre à jour les cercles
|
// Mettre à jour les cercles
|
||||||
features = [];
|
features = [];
|
||||||
|
|
||||||
|
josm_elements = [];
|
||||||
data.elements.forEach(element => {
|
data.elements.forEach(element => {
|
||||||
const lat = element.lat || (element.center && element.center.lat);
|
const lat = element.lat || (element.center && element.center.lat);
|
||||||
const lon = element.lon || (element.center && element.center.lon);
|
const lon = element.lon || (element.center && element.center.lon);
|
||||||
|
@ -277,6 +293,7 @@
|
||||||
center: [lon, lat] // Stocker le centre comme un tableau [lon, lat]
|
center: [lon, lat] // Stocker le centre comme un tableau [lon, lat]
|
||||||
};
|
};
|
||||||
features.push(circle);
|
features.push(circle);
|
||||||
|
josm_elements.push(element);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -309,29 +326,49 @@
|
||||||
document.getElementById('maploader').classList.add('d-none');
|
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() {
|
function openInJOSM() {
|
||||||
const selectedElements = document.querySelectorAll('input[type="checkbox"]:checked');
|
if (josm_elements.length === 0) {
|
||||||
if (selectedElements.length === 0) {
|
|
||||||
alert('Veuillez sélectionner au moins un élément');
|
alert('Veuillez sélectionner au moins un élément');
|
||||||
return;
|
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() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
console.log('DOMContentLoaded');
|
console.log('DOMContentLoaded');
|
||||||
|
|
||||||
const map = new maplibregl.Map({
|
maplibre = new maplibregl.Map({
|
||||||
container: 'map',
|
container: 'map',
|
||||||
style: 'https://api.maptiler.com/maps/streets-v2/style.json?key={{ maptiler_token }}',
|
style: 'https://api.maptiler.com/maps/streets-v2/style.json?key={{ maptiler_token }}',
|
||||||
center: [2.3488, 48.8534],
|
center: [2.3488, 48.8534],
|
||||||
zoom: 12
|
zoom: 12
|
||||||
});
|
});
|
||||||
|
map = maplibre;
|
||||||
|
|
||||||
document.getElementById('openInJOSM').addEventListener('click', openInJOSM);
|
document.getElementById('openInJOSM').addEventListener('click', openInJOSM);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue