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.
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.