/** * Suche + City Quick-Links: Ortssuche via Nominatim (kostenlos). */ const SearchUI = { _cities: [ { name: 'Berlin', lat: 52.52, lon: 13.40 }, { name: 'Washington', lat: 38.90, lon: -77.04 }, { name: 'Moskau', lat: 55.75, lon: 37.62 }, { name: 'Peking', lat: 39.91, lon: 116.40 }, { name: 'Tokio', lat: 35.68, lon: 139.69 }, { name: 'London', lat: 51.51, lon: -0.13 }, { name: 'Paris', lat: 48.86, lon: 2.35 }, { name: 'Teheran', lat: 35.69, lon: 51.39 }, { name: 'Kiew', lat: 50.45, lon: 30.52 }, { name: 'Jerusalem', lat: 31.77, lon: 35.23 }, { name: 'Taipei', lat: 25.03, lon: 121.57 }, { name: 'Hormuz', lat: 26.56, lon: 56.28 }, ], init() { var self = this; var input = document.getElementById('globe-search'); var results = document.getElementById('search-results'); if (!input) return; // City Quick-Links rendern var linksEl = document.getElementById('city-links'); if (linksEl) { linksEl.innerHTML = this._cities.map(function(c) { return ''; }).join(''); } // Suche var timer = null; input.addEventListener('input', function() { clearTimeout(timer); var q = this.value.trim(); if (q.length < 3) { results.style.display = 'none'; return; } timer = setTimeout(function() { self._search(q); }, 400); }); input.addEventListener('keydown', function(e) { if (e.key === 'Enter') { e.preventDefault(); var q = this.value.trim(); if (q.length >= 2) self._search(q); } }); }, _search(query) { var results = document.getElementById('search-results'); fetch('https://nominatim.openstreetmap.org/search?q=' + encodeURIComponent(query) + '&format=json&limit=5', { headers: { 'Accept-Language': 'de' } }) .then(function(r) { return r.json(); }) .then(function(data) { if (!data.length) { results.innerHTML = '