papa@engel-city.de schrieb:
Hallo,
...
Jetzt möchte ich, dass die Karte nur in einem bestimmten Bereich angezeigt wird. Code:
map = new OpenLayers.Map('map', { projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326"), controls: [ new OpenLayers.Control.MouseDefaults()], maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34, 20037508.34, 20037508.34), numZoomLevels: 18, maxResolution: 156543, units: 'meters' });
Ich denke, das dafür der Eintrag Code:
OpenLayers.Bounds(-20037508.34,-20037508.34, 20037508.34, 20037508.34)
zuständig ist. Leider kann ich in die Zahlen nichts vernünftiges rein interpretieren. Auch die OpenLayers Hilfe schweigt sich dazu aus http://dev.openlayers.org/docs/files/Op … ds-js.html <http://dev.openlayers.org/docs/files/OpenLayers/BaseTypes/Bounds-js.html> nur das es sich dabei um die Koordinten links, unten, rechts und oben handelt. Die Zahlen sehen jetzt aber nicht wirklich nach Geokoordinaten aus. Wie komme ich jetzt von den GPS Koordinaten auf die richtige Zahl? Oder ist OpenLayers.Bounds gar nicht der richtige Eintrag?
Hallo Andreas, hier wird mit 2 verschiedenen Koordinatensystemen hantiert. Jedes System wird durch eine Nummer bezeichnet, den EPSG-Code. Die Koordinaten sind in EPSG:4326 gespeichert, das sind die geografischen Koordinaten. Die eignen sich in unseren Breiten nicht so recht für die Darstellung, weil die Meridianstreifen hier schon spitz zulaufen, aber noch genau so breit angezeigt werden, wie am Äquator. Daher sind die Längen verzerrt und die Winkel werden schief. "EPSG:900913" ist kein offizieller EPSG-Code sondern "von Google erfunden" worden. In PostGIS und proj4 muss man sie nachtragen um damit zu arbeiten, OpenLayers kennt dies System aber. http://www.spatialreference.org/ref/?search=900913 --> http://www.spatialreference.org/ref/sr-org/6627/ http://trac.openlayers.org/wiki/SphericalMercator OpenLayers: Auf meiner Homepage verwende ich für die Positionierung auf das Stadtgebiet von Lemgo folgenden Code: var min = lonLatToMercator(new OpenLayers.LonLat(8.83, 52.016)); var max = lonLatToMercator(new OpenLayers.LonLat(8.93, 52.046)); var bbox = new OpenLayers.Bounds(min.lon, min.lat, max.lon, max.lat); map.zoomToExtent(bbox); Ich gebe die Werte also in geogr. Koordinaten an, lasse sie aber in das Anzeige-System umrechnen. Die Function "lonLatToMercator" steckt in map.js. Das "zoomTo" im Init-Script definiert die anfängliche Sicht, man kann aber dann wieder hinaus-zoomen. Es ist also keine Begrenzung der Karte. Hier abgucken: http://www.fotodrachen.de/osm_lemgo.htm http://www.fotodrachen.de//javascripts/map.js http://www.fotodrachen.de//javascripts/OpenStreetMap.js Ach ja, ich wollte dir gelegentlich noch die Koordinaten durchsagen um die "Wanderkarte" auf ganz Lippe zu erweitern. Oder gibt es die inzwischen irgendwo flächendeckend von einem TileServer? -- Frank