Ich benutze eine OpenLayers-Map und möchte verschiedene MapServer verwenden, die verschiedene Koordinatensysteme verwenden. Kann OpenLayers es in dieselbe Map integrieren und Koordinatensysteme automatisch konvertieren?Wie kann ich Layer mit unterschiedlichen Koordinatensystemen in OpenLayers mischen?
Antwort
Je nach Layer haben Sie immer eine Art von Baselayer (die Karte), die Sie nicht wirklich konvertieren können. Wenn Sie Daten (Marker, Geo Json Zeug, etc) auf dieser Karte hinzufügen möchten, müssen Sie sie in die Projektion konvertieren, die der Baselayer verwendet.
// defining our coordinate systems
var google = new OpenLayers.Projection("EPSG:900913"),
latlon = new OpenLayers.Projection("EPSG:4326");
// transforming the location to the right coordinate system
var location = new OpenLayers.LonLat(10, 10).transform(latlon, google);
// assuming you made an icon and marker layer
var marker = new OpenLayers.Marker(location, icon);
markerLayer.addMarker(marker);
Schauen Sie sich die Openlayers-Dokumentation von einem System zum anderen über die Umwandlung Lage:
dies für Marker können easyly durch erfolgen.
Wenn die Karte Server bieten verschiedene Rastern dann können Sie von Glück.
Wenn sie jedoch Vektoren (z. B. KML-Dateien) oder JavaScript-geschriebene Kartenobjekte (z. B. Dres Antwort) bereitstellen, können Sie zwischen verschiedenen Projektionen umwandeln, so dass alle Daten in derselben Projektion und demselben Koordinatensystem angezeigt werden als Basiskarte. OpenLayers hat die Haken dafür (siehe Dre's Antwort), aber Sie müssen wahrscheinlich die Proj4JS-Bibliothek mit einschließen, die die Funktionalität zur Verfügung stellt.
Oder Sie könnten verwenden Proj4JS sich die Koordinaten zu transformieren vor dem Plotten.
Dies ist eine alte Frage, aber ich stieß auf eine Suche und dachte, ich könnte hineinspielen, falls das für andere hilfreich ist.
Dies kann von der Situation in der gestellten Frage abweichen, aber ich stieß in letzter Zeit auf eine ähnliche Situation. In meinem Fall musste ich die Ausgabe von zwei verschiedenen WMS-Anbietern auf einer Karte zeigen. Eine erbrachte ihre Dienste in EPSG: 900913, die andere in EPSG: 3857. Ich wusste, dass diese are functionally equivalent, ich dachte, wenn ich sie nur auf eine Weise anfordern könnte, die die Dienste funktionierte, dass die Karte in der Lage sein würde, mit der Ausgabe zu arbeiten. Meine Karte befindet sich in 900913 (und die anderen Dienste fordern daher standardmäßig die Verwendung dieser Projektion an).
Wie konnte ich das andere Service angefordert werden zu lassen, war richtig wie folgt (mit Ihren Daten gefüllt):
var myLayer = new OpenLayers.Layer.WMS(
"Name",
"URL", {
"layer": "layer"
});
myLayer.projection = "EPSG:3857";
Normalerweise ?request=getCapabilities
an den Dienst-URL anfügt ermöglicht es Ihnen, zu sehen, was Projektionen vorhanden sind aus dem Dienst in den CRS-Tags einer gewünschten Schicht.
- 1. Wie bekomme ich Funktionen von Vektor-Layer in Openlayers 3
- 2. Wicket: Openlayers Integration & Open Streetmaps Layer
- 3. Wie kann ich LaTeX mit Markdown mischen?
- 4. Circle Layer wird nicht in OpenLayers 3 angezeigt
- 5. C# SerialPort - Probleme beim Mischen von Ports mit unterschiedlichen Baudraten
- 6. OpenLayers - KML Vector Layer zIndexing umgekehrt, aber Zoom ein-/auszoomen
- 7. Wie kann ich Bits effizient mischen?
- 8. Wie kann ich die Koordinaten eines Merkmals in Openlayers 3
- 9. OpenLayers: Kann ich dem Marker einen Namen, eine Beschreibung geben?
- 10. Wie kann ich statische Marker in OpenLayers 3 erstellen?
- 11. Wie kann ich das Zoomen in OpenLayers 3 verlangsamen?
- 12. Wie kann ich DynamicData Routen mit Mvc Routen mischen?
- 13. OpenLayers 3: Wie wähle ich ein Feature programmgesteuert mit ol.interaction.Select?
- 14. Wie kann ich optionale Schlüsselwortargumente mit dem & rest Zeug mischen?
- 15. Wie kann ich Spalten innerhalb data.table auswerten mit unterschiedlichen Bedingungen
- 16. Basic Auth mit OpenLayers 3
- 17. Wie kann ich auf 2 Observables mit unterschiedlichen Rückgabetypen warten?
- 18. Wie kann ich einander ausschließende Optionsfelder mit unterschiedlichen Namen erstellen?
- 19. Wie kann ich zwei MP3-Dateien mit unterschiedlichen Bitraten verketten?
- 20. Wie kann ich zwei Videostreams in C# mischen?
- 21. Wie kann ich HTML und Svg in einer Ulmenansicht mischen?
- 22. Wie kann ich SVG und HTML in eine Seite mischen?
- 23. Wie mache ich Transaktionen in Service Layer
- 24. Viewing-Vektor-Overlay in einer OpenLayers-Map
- 25. Kann ich SqlConnection.BeginTransaction und TransactionScope mischen?
- 26. So konvertieren Sie Vektor-Layer-Koordinaten in Map Breite und Länge in Openlayers
- 27. Bergfex Leaflet Layer
- 28. Ich kann keinen Vektor erstellen und mischen
- 29. Dxf: Wie kann ich wissen, welche Layer angezeigt werden sollen?
- 30. Zeichnen Sie einen OpenLayers-Layer mit verschiedenen Stilen für jeden Koordinatensatz