x

map lässt sich icht zentrieren?


  1. map lässt sich icht zentrieren? · Ghostrider82 (Gast) · 23.07.2011 17:50 · [flux]

    Ich mal wieder -.-

    Wieso zentriert der Kamerad hier mir meine Karte nicht auf die genannten Koordinaten?

    map␣=␣new␣OpenLayers.Map('map',
    {
    projection:␣new␣OpenLayers.Projection('EPSG:900913'),
    displayProjection:␣new␣OpenLayers.Projection('EPSG:4326')
    });
    
    layer␣=␣new␣OpenLayers.Layer.OSM.Osmarender('Tiles@Home');
    
    });
    
    map.addLayer(layer);
    
    map.setCenter(new␣OpenLayers.LonLat(8,53),15);
    

    Hat das wieder was mit der Transformation zu tun? Habe gerade zumindest versucht, damit das Zentrier Problem zu lösen.


    • Re: map lässt sich icht zentrieren? · maxbe (Gast) · 23.07.2011 19:48 · [flux]

      Ghostrider82 wrote:

      Hat das wieder was mit der Transformation zu tun? Habe gerade zumindest versucht, damit das Zentrier Problem zu lösen.

      Vermutlich...

      Probier doch mal

      map.setCenter(new␣OpenLayers.LonLat(8,53).transform(map.displayProjection,map.projection),15);
      

      Grüße, Max


    • Re: map lässt sich icht zentrieren? · Ghostrider82 (Gast) · 24.07.2011 22:18 · [flux]

      Genau das wars, vielen Dank 🙂

      Aus welchem Grunde ist die Transformation denn eine andere, wenn ich WMS verwende?
      Oder habe ich das Thema Transformation nur falsch verstanden?


    • Re: map lässt sich icht zentrieren? · maxbe (Gast) · 24.07.2011 23:38 · [flux]

      Eine Gebilde vom Typ OpenLayers.Map hat ein Property namens projection. Das gibt an, in welcher Projektion alle Koordinaten dort verwendet werden. Default ist eine Plattkarte ("EPSG 4326"), mit Koordinaten in Lon/Lat. Daneben gibts noch die displayprojection, die wird aber nur Gebraucht für ein paar controls, die Koordinaten angeben, mouseposition z.B.

      Diese default-Projektion wird wird entweder beim Kreieren der map festgelegt, oder nochmal überschrieben bei der Definition des baselayers. Wenn Du z.B. eine OSM-Kachelkarte einbindest, schaltest Du z.B. auf 900913 um, das ist das, was mit sphericalMercator in der Beschreibung von OpenLayers.Layer.XYZ gemeint ist.

      Du hast explizit eine Projektion in 900913 gewünscht, vermutlich weil Dein WMS das so ausgibt, oder um Osmarender einzubinden. Dann musst Du auch alle Koordinaten, die Du in Lat/Lon hast umrechnen in dieses komische 900913-Format mit "Metern rechts vom Nullmerisdian, Metern nördlich vom Äquator, aber keine echten Abstände, sondern mercatorprojezierte", wenn Du sie auf der Karte darstellen willst. Das erledigt dieses OpenLayers.LonLat(lo,la).transform(...4326,...900913) für dich.

      Grüße, Max