Refactor: Overpass nur via VLM, Panel ersetzt rechte Sidebar
- Overpass-Toggle aus Layer-Panel entfernt (kein Standalone-Modus) - Overpass-Panel und UI-Script entfernt - VLM-Panel nach rechts verschoben, ersetzt Sidebar wenn aktiv - Sidebar wird automatisch ein-/ausgeblendet bei VLM Toggle - VLM ruft Overpass API direkt auf (kein Umweg ueber OverpassUI) - Ergebnis-Zaehler im VLM-Panel statt separatem Overpass-Panel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -267,7 +267,8 @@ const VlmUI = {
|
||||
var searchResult = document.getElementById('vlm-search-result');
|
||||
if (searchResult) { searchResult.style.display = 'block'; searchResult.textContent = 'Generiere Overpass-Queries...'; searchResult.style.color = 'var(--text-dim)'; }
|
||||
|
||||
// Queries generieren
|
||||
// 1. Queries generieren
|
||||
var startTime = Date.now();
|
||||
fetch('/api/vlm/generate-queries', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -280,23 +281,35 @@ const VlmUI = {
|
||||
.then(function(data) {
|
||||
if (searchResult) searchResult.textContent = 'Query generiert (' + data.tag_count + ' Tags). Suche OSM-Daten...';
|
||||
|
||||
// Overpass-Layer aktivieren und Query ausfuehren
|
||||
var overpassCb = document.getElementById('layer-overpass');
|
||||
if (overpassCb && !overpassCb.checked) {
|
||||
overpassCb.checked = true;
|
||||
overpassCb.dispatchEvent(new Event('change'));
|
||||
}
|
||||
|
||||
// Query an Overpass senden
|
||||
// 2. Overpass-Query direkt ausfuehren
|
||||
OverpassLayer.setColor('#e040fb');
|
||||
if (typeof OverpassUI !== 'undefined') {
|
||||
OverpassUI.executeQueryDirect(data.query, bbox, '#e040fb');
|
||||
return fetch('/api/overpass/query', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ query: data.query, bbox: bbox }),
|
||||
});
|
||||
})
|
||||
.then(function(r) {
|
||||
if (r.status === 429) {
|
||||
return r.json().then(function(d) { throw new Error(d.detail || 'Rate-Limit'); });
|
||||
}
|
||||
|
||||
if (!r.ok) {
|
||||
return r.json().then(function(d) { throw new Error(d.detail || 'Overpass-Fehler'); });
|
||||
}
|
||||
return r.json();
|
||||
})
|
||||
.then(function(data) {
|
||||
var elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
||||
OverpassLayer.render(data);
|
||||
if (searchResult) {
|
||||
searchResult.textContent = 'Overpass-Suche gestartet';
|
||||
var text = data.total + ' Orte gefunden (' + elapsed + 's)';
|
||||
if (data.cached) text += ' [Cache]';
|
||||
if (data.truncated) text += ' [Limit erreicht]';
|
||||
searchResult.textContent = text;
|
||||
searchResult.style.color = 'var(--accent)';
|
||||
}
|
||||
var countEl = document.getElementById('count-vlm');
|
||||
if (countEl) countEl.textContent = data.total;
|
||||
})
|
||||
.catch(function(e) {
|
||||
if (searchResult) {
|
||||
@@ -329,5 +342,8 @@ const VlmUI = {
|
||||
|
||||
var countEl = document.getElementById('count-vlm');
|
||||
if (countEl) countEl.textContent = '-';
|
||||
|
||||
// Overpass-Ergebnisse loeschen
|
||||
if (typeof OverpassLayer !== 'undefined') OverpassLayer.clear();
|
||||
},
|
||||
};
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren