Hauptmenü

Werkzeuge

Kategorien

Archiv

Weiter Anker Scroll mit VanillaJS

Erstellt in Javascript am 30. Juli 2021 vom Daschmi

Mit folgenden Vanilla JS Code Schnipsel scrollen die Anker Links smart zu den Zielen.

for (let element of document.querySelectorAll('a[href^="#"]')) {
        
    element.addEventListener('click', (event) => {
        
        event.preventDefault();
        
        let hash = element.getAttribute('href');
        let target = document.getElementById(hash.substr(1));
        
        if (target !== null) {
        
            let rect = target.getBoundingClientRect();
            let top = (window.pageYOffset || document.documentElement.scrollTop) + rect.top;
                
            let offset = 92;
            
            window.scrollTo({
                top: top - offset,
                behavior: "smooth"
            });

        }
        
    });
    
}

Längen- und Breitengrad über Nominatim/Openstreetmap ermitteln

Erstellt in Allgemein am 21. Juli 2021 vom Daschmi

Mit folgender einfachen Klasse kann man aus einer Adresse die Längen-/Breitengrade ermitteln. Genutzt wird die Nominatim API. Nutzungsbedingungen der Nominatim API.

abstract class Nominatim {
    
    public static function getLongLatFromAddress(string $strAddress): array {
        
        $ch = curl_init();
        
        curl_setopt($ch, CURLOPT_URL, 'https://nominatim.openstreetmap.org/search?q=' . urlencode($strAddress). '&format=json&polygon=1&addressdetails=1');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_REFERER, 'https://sonnenberggmbh.de/');

        $output = curl_exec($ch);

        curl_close($ch);  
        
        $output = @json_decode($output, true);
            
        if (is_array($output) && isset($output[0])) return [
            'long' => $output[0]['lon'],
            'lat' => $output[0]['lat'],
            'raw' => $output 
        ]; else return [
            'long' => null,
            'lat' => null,
            'raw' => null
        ];
                    
    }
    
}

Anwendung:

$result = Nominatim::getLongLatFromAddress('Burgscheidungen');

echo "Längen-/Breitengrad: ".$result['long'].' / '.$result['lat'];