Karte eingrenzen mit OpenLayers.Bounds?
Frank Jäger
frank at fotodrachen.de
So Mär 22 19:16:24 CET 2009
papa at 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
More information about the OSM
mailing list