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