Hallo joergi2012,
bevor die Krümmelkacker gleich wieder zuschlagen gleich vorweg, bei Openstreetmap - also in der Datenbank - gibt es kein Norden = Oben. Was du sicherlich meinst sind die Karten wie z.B. openstreetmap.org oder openstreetmap.de. Dort ist, wie bei allen anderen gerasterten (Tile) Karten auch, Norden immer oben - zumindest habe ich noch keine gesehen, bei der es nicht so ist. Im gegensatz zu vektorkarten kann man ja auch nicht mal gerade ebenso die Karte drehen wie man lustig ist, wie z.B. im bestimmten Navigation-Apps, wo es dann auch in der Tat Sinn macht eine Kompaßrose oder einen “Nordpfeil” einzublenden.
Wenn, dann müsste man es in der Tat als Layern einbinden, wobei dies nicht zwingend ein OpenLayers/Leaflet Layer sein müsste, da man TileKarten eh nicht drehen kann, reicht ein normaler html-div-layer.
Definiere „Openstreetmap“. Es wäre wahrscheinlich kein Problem, aus der OSM-Datenbank eine elbische Karte zu rendern, die Westen oben hat. Die gängigen Renderer halten sich aber an die Konvention, Norden nach oben zu nehmen.
Also abgesehen von der Möglichkeit, deinen Bildschirm zu drehen: Ja, Norden ist in aus Openstreetmap erzeugten Karten (was nicht mit Openstreetmap selbst, der Geodatenbank, verwechselt werden sollte) oben.
Hier verläßt mich mein Logikmodul. Ein „Wenn nein“ hätte ich noch logisch gefunden, aber wozu brauchst du eine Windrose auf der Karte, wenn schon mehr oder weniger feststeht, wo Norden ist?
Ja, aber da handelt es sich ja nicht mehr um “Standardkarten” Und klar, wenn ein Radweg von Norden nach Süden läuft, ich den aber im Querformat haben will, macht es ja durchaus Sinn, die Karte “gedreht” zu rendern und dann ist der Nordpfeil oder die Kompaßrose definitiv auch eine Pflichtangabe
hej joergi2012,
fuer Dein Problem existieren diverse “fertige” Lösungen. Nimmst Du aus den openstreetmap Daten generierte Karten - wie z.B. die freizeitkarte-osm, reitwanderkarte.de oder openandromaps - und verwendest die entsprechenden zum Kartenformat passenden Programme (z.B. Oruxmaps, Basecamp von Garmin oder qlandkarte) kannst Du die Karte mit Hilfe der im Programm vorgesehen Kompassrose beliebig verdrehen. Auch die diversen Garmingeräte können die Karte automatisch in Fahrtrichtung ausrichten - es ist also vernuenftig anzunehmen, dass die Navis anderer Hersteller das auch können.
Der einzige Nachteil dieser Lösung ist, dass Änderungen nicht so schnell sichtbar werden und Du immer mit dem Datenbestand zum Zeitpunkt der ERstellung der Karte arbeitest - der grosse Vorteil ist aber, dass es auch ohne jede onlineverbindung klappt.
So, habe jetzt eine Kompassgrafik gefunden. Nun stehe ich aber vor dem Problem, diese PNG Datei einzubinden. Irgendwie finde ich kein vernünftiges Beispiel, das ich verstehe. Könnt Ihr mir einen Tip geben, wie ich eine Grafik als “Overlay Layer” integrieren kann? Die Grafik verändert natürlich weder die Position noch die Größe
danke für das Angebot. Aber ich habe mir jetzt eine eigene Kompassgrafik gebastelt, die ich rechts neben dem “Layer switcher” positionieren möchte. Jetzt müßte meine Kompass Grafik ja eigentlich einen geringeren Z-index Wert besitzen, damit entsprechende Punkte im “Layer switcher” evtl. angelickt werden könnten, oder? Leider weiß ich nicht, wie ich meine feststehende und nicht größenveränderbare Kompass Grafik in meinen script (Siehe mein heutiges posting um 9:11 Uhr) einbetten kann …
Versuchs mal damit. Ist eine leichte Veränderung Deines Scripts. Ich habe eine Bilddatei namens compass.png verwendet, die im selben Verzeichnis wie die HTML liegt (Diese Lösung “missbraucht” ebenfalls das Attribution-Control)
<script src="OpenLayers/OpenLayers.js">
</script><script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js">
</script>
<div id="map" style="width:750px;height:510px;"></div>'
<script type="text/javascript" src="OpenLayers/my_panzoombar.js"></script>
<script type="text/javascript">
var map;
function showMap()
{
map = new OpenLayers.Map("map",
{
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
maxResolution: 156543.0399,
units: "m",
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
controls: [],
});
map.addControl (new OpenLayers.Control.LayerSwitcher());
map.addControl (new OpenLayers.Control.Attribution());
map.addControl (new OpenLayers.Control.Navigation());
map.addControl (new OpenLayers.Control.PanZoomBar({minZoom: 12}));
var layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik (updated weekly)");
layerMapnik.attribution = "<img src=compass.png>";
map.addLayers([layerMapnik]);
map.setCenter(new OpenLayers.LonLat(7.2741121239461,51.590829124866).transform(new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913")), 14);
marker.events.register("mousedown", marker, function(evt)
{
OpenLayers.Event.stop(evt);
}
);
map.layers[map.layers.length-1];
}
showMap();
</script>
<style>
div.olControlAttribution {
right: 20px;
top: 3px;
}
</style>
Ich würde auch wie im Beispiel von Lutz den Nordpfeil mit besonders hohem z-index als div ganz unabhängig von OpenLayers irgendwo über die Karte kleben und den Layerswitcher irgendwo darunter hinschieben… Oder warten bis jemand ein schönes Beispiel mit OpenLayers 3 oder Leaflet bringt.
habe mich jetzt an das Beispiel von Andreas gehalten. Der Kompaß wurde oben rechts positioniert und der layerswitcher “tiefer gelegt”. Sieht jetzt toll aus. Aber leider fehlt jetzt der “Atrribution” Hinweis unten in der rechten Ecke. Mache ich da einen Denkfehler? Wie kann ich den wieder anzeigen lassen?
habe jetzt noch etwas rumexperimentiert und die für mich beste Lösung gefunden. Der Switchlayer, wurde nun weiter heruntergesetzt, damit der mit einer absoluten Positionierung rechts oben gesetzte Kompass Platz hat. Das ganze funktioniert einwandfrei. Damit habe ich jetzt doch auf eine Änderung im Javascript verzichtet.
Ich habe auf der INTERGEO letztes Jahr in Berlin einen Vortrag dazu gehalten (@Markus: bald kommt noch was, ich habe echt viel zu tun).
Norden ist NICHT immer oben. Es gibt drei Arten von Norden:
Gitternord
Magnetisch Nord
Geographisch Nord
Die OpenStreetMap-Projektion zeigt nach Gitternord - das hat aber nichts mit dem Kompass zu tun. Wenn man z.B. in Nordamerika unterwegs ist und mit OSM und einem Kompass Richtung Kanada wandern will, kommt man ganz woanders raus. Ganz gefährlich ist das für Segler. Man muss einen Kurs nämlich ständig korrigieren.
Ich habe dazu einen Artikel für ein Magazin geschrieben, der noch nicht veröffentlicht wurde. Ich könnte ihn umschreiben und die wichtigsten Teile veröffentlichen.
Ich glaube, es hat sich eingebürgert, trotzdem keinen Nordpfeil auf die Karte zu setzen, solange die Abweichung nur ein paar Grad beträgt. Sonst hätten wir auf jeder Wanderkarte eine kleine Kompassrose. Die Feinheiten überlässt man Experten, die mit den Linien, den Diagrammen und dem Kleingedruckten am Kartenrand klarkommen. Dem Rest unterstellt man, dass er eh nicht genauer zielen kann.
Wie sieht denn eine nordkanadische Karte aus? Sind da drei fette Pfeile zu den beiden Polen und zum Gitternord drauf?
Achtung: Wanderkarten besitzen in der Regel eine Projektion, wie UTM oder Gauß-Krüger mit einer gewissen lokalen Begrenzung. In diesem Bereich sind dann Strecken- und Winkelmessungen einigermaßen okay. Wenn du aber z.B. eine GK2-Wanderkarte im Osten von NRW verwendest, wirst du dich schön wundern
Wie du weißt, ist unsere Merkatorprojektion nur in sehr geringem räumlichen Maße z.B. für Streckenmessungen, aber recht gut für Peilungen geeignet. Wenn du dann aber in Realität die Peilung ablaufen willst, musst du deinen Kompass anpassen. Gute Kompasse haben extra eine Schraube dafür. In Deutschland ist das zur Zeit egal. Vor ein paar Jahrzehnten hatten wir aber noch 10° Abweichung zum Nordpol, momentan liegt der unterhalb der Messtoleranz eines normalen Wanderers.
Gauß hat das übrigens damals bei seinen Messungen rausgefunden - ich rede also kein Mist.
Professionelle Karten, wie See, Wanderung, amtliche Topographische Karten, - auch bei uns - haben einen Hinweis über die Nadelabweichung (usw.) drauf, meistens neben der Karte und nicht im Kartenbild. Außer bei Seekarten, dort sind sie in die Karte gezeichnet.