x

Lat Lon aus Nominatim in Openlayers nutzen


  1. Lat Lon aus Nominatim in Openlayers nutzen · ls-sim (Gast) · 07.07.2017 23:39 · [flux]

    Hallo zusammen,

    ich habe eine Karte erstellt die eine Adresse anzeigen soll die ich mittels Nominatim auslese. Leider schaffe ich es nicht die Karte richtig zu zentrieren. Ich mutmasse dass dies an der Projektion liegt. Die Adresse wird aus einer MySQL Datenbank ausgelesen und in den Javatext eingefügt. Wenn ich z.B. die LatLon aus der GeoLocation des Browsers nutze Funktioniert das Script. So wie unten landet das Center in Afrika.

    $(document).ready(function()
    {$("#daten").load("http://nominatim.openstreetmap.org/search?q=adresse&format=xml&polygon_svg=1&addressdetails=1",
    function()
    {
    var␣box=$("#daten").find("place").attr("boundingbox");
    var␣lat=$("#daten").find("place").attr("lat");
    var␣lon=$("#daten").find("place").attr("lon");
    var␣esStyle␣=␣new␣ol.style.Style({
    image:␣new␣ol.style.Icon(/**␣@type␣{olx.style.IconOptions}␣*/␣({
    anchor:␣[13,␣16],
    anchorXUnits:␣'pixels',
    anchorYUnits:␣'pixels',
    src:␣'bg/es.png'
    }))
    });
    var␣esIcon=new␣ol.Feature({
    geometry:␣new␣ol.geom.Point(ol.proj.transform([lat,lon],'EPSG:4326','EPSG:3857')),
    name:␣'Test'
    });
    esIcon.setStyle(esStyle);
    esIcon.setId("esIcon");
    
    var␣esSource␣=␣new␣ol.source.Vector({
    features:␣[esIcon]
    });
    
    var␣esLayer␣=␣new␣ol.layer.Vector({
    source:␣esSource
    });
    var␣rasterLayer␣=␣new␣ol.layer.Tile({source:new␣ol.source.OSM()});
    
    var␣map␣=␣new␣ol.Map({
    layers:␣[rasterLayer,␣esLayer],
    target:␣document.getElementById('map'),
    view:␣new␣ol.View({
    center:␣ol.proj.fromLonLat([lon,lat]),
    zoom:␣3
    }),
    logo:logoElement
    });
    
    });
    });
    

    Bin für jede Hilfe Dankbar!


    • Re: Lat Lon aus Nominatim in Openlayers nutzen · wambacher (Gast) · 08.07.2017 01:11 · [flux]

      ls-sim wrote:

      So wie unten landet das Center in Afrika.

      Bin für jede Hilfe Dankbar!

      Hab mir den Code nicht näher angesehen, aber das spricht ganz dafür, dass du irgendwo lat und lon vertauscht hast.
      Dreh das doch mal um.

      Gruss
      walter


    • Re: Lat Lon aus Nominatim in Openlayers nutzen · axelr (Gast) · 08.07.2017 02:40 · [flux]

      +1
      bei der Transformation. Richtig wäre:
      geometry: new ol.geom.Point(ol.proj.transform([lon,lat],'EPSG:4326','EPSG:3857')),

      Gruß Axel


    • Re: Lat Lon aus Nominatim in Openlayers nutzen · ls-sim (Gast) · 08.07.2017 11:26 · [flux]

      Habe den Fehler gefunden. Durch das auslesen wurde die Variable als String und nicht als Int Wert gespeichert. Ei parseInt() in den Quelltext und es klappt alles einwandfrei. Danke für die Antworten!