map lässt sich icht zentrieren?

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.

Vermutlich…

Probier doch mal

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

Grüße, Max

Genau das wars, vielen Dank :slight_smile:

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

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