Ich habe eine Weile in Google Maps entwickelt und wechsle zu OpenLayers, stecke aber in einem Punkt fest: Ich zeichne Vektoren, die größtenteils kreisförmig sind, aber auch eine benutzerdefinierte Geometrie beinhalten, sodass ich createRegularPolygon nicht verwenden kann. Ich erstelle ein Array von Punkten und sende es an ein OpenLayers.Layer.Vector-Objekt. Dies funktioniert gut, aber die resultierenden "Kreise" sind nur in der Nähe des Äquators rund, nicht in höheren Breiten. Sie werden ungefähr so stark gequetscht, wie sich die Grundkarte in höheren Breiten befindet, was sinnvoll erscheint. Wenn ich Google als Basisschicht verwende, haben sie in allen Breiten die richtige Form, aber ich mache eine mobile Offline-Lösung, damit dies nicht funktioniert.
Was verwende ich für eine Basisebene (oder welche Parameter müssen eingestellt werden), damit meine Geometrie in allen Breiten rund bleibt, ohne Google oder Online-Karten zu verwenden?
Es gibt keine Karte der gesamten Erde, auf der alle (wahren, kugelförmigen) Kreise wirklich rund bleiben. Es gibt jedoch Möglichkeiten, die Erde abzubilden, bei denen fast alle ausreichend kleinen Kreise rund sind. Diese basieren auf konformen Projektionen . Per Definition gibt es nur zwei Arten von Änderungen, die eine konforme Projektion an Abständen innerhalb kleiner Bereiche vornimmt : eine gleichmäßige Dehnung und eine Drehung. Offensichtlich machen diese Änderungen Kreise nicht weniger rund.
Karte der Erde mit einer epizykloiden Augustprojektion . Die meisten Kreise erscheinen auf dieser Karte wirklich rund.
Häufig verwendete konforme Projektionen sind der Mercator (eine zylindrische Projektion), Stereographic (eine azimutale Projektion) und der Lambert Conformal Conic (offensichtlich eine konische Projektion). Diese decken die drei Hauptfamilien von Projektionen ab und geben Ihnen die Flexibilität, einen bestimmten "Blick" auf das Raster von Meridianen und Breitengraden zu wählen. Zusätzliche Optionen, die in einigen GIS verfügbar sein können, umfassen Miller Oblated Stereographic , Littrow , Bipolar Oblique Conic Conformal , Lagrange , Eisenlohr , August Epicycloidal , Guyou und Peirce Quincuncial, GS50 , verschiedene Adams- Projektionen und Lee . (Quelle: Snyder & Voxland, Ein Album mit Kartenprojektionen. USGS Professional Paper 1453.) Diese beiden letzten zeigen die Fülle möglicher konformer Projektionen, die erstellt werden können, und zeigen, wie konforme Projektionen nicht wirklich "formbewahrend" sind: Adams-Projektionen werden konform abgebildet eine Halbkugel in ein Quadrat und die Lee-Projektion platziert es in ein Dreieck. Tatsächlich zeigt der Riemann-Mapping-Satz der komplexen Analyse, dass Sie eine Hemisphäre konform in jedes Polygon abbilden können!
OpenLayers verwendet die Proj4js- Projektionsbibliothek. Der Quellcode für die Projektionen wird im Ordner / proj4js / lib / projCode / verteilt. Die konforme Vorsprünge mit der neuesten Version enthalten (1.0.2) sind die Mercator , zwei Quermercators , zwei schräge Mercators ( "Hotine" und "Swiss Oblique"), Lambert Conformal Conic und stereographische .
Wenn Ihre Anwendung nicht für die weltweite Verwendung ausgelegt ist, sollten Sie diese Optionen untersuchen und untersuchen, um festzustellen, welche für Ihre Region von Interesse am besten geeignet ist . All dies kann leicht neu zentriert und neu skaliert werden, um die Gesamtverzerrung (nicht nur von Formen, sondern auch von Bereichen und Abständen) innerhalb eines bestimmten Bereichs zu minimieren. Die weltweite Standardlösung ist eine Variante des Mercator, die von Google Maps populär gemacht wird.
quelle
Nun, offensichtlich werden Sie Probleme haben, solange Sie die Grundkarte in der EPSG: 4326-Projektion verwenden. Was Sie brauchen, ist die sphärische Mercator-Projektion, die, wie Sie bemerkt haben, Google Maps und andere kommerzielle Kartenanbieter sind. Gehen Sie weiter und lesen Sie ein besseres Verständnis für dieses Problem zu umgehen.
Für Ihre mobile Offline-Lösung wäre OpenStreetMap wahrscheinlich eine gute Lösung.
quelle