Man kann ja bei OSM URL-Parameter übergeben, z.B. “?relation=1273572”, das geht jedoch bei meiner Karte nicht, nur lat/lon/zoom/layer-Parameter. Ist das ein spezielles Feature von OSM und nicht in OpenLayers?
Ja klar doch, die Relationsnummer wird an die api übergeben, und bekommt von dort die Geometrieangaben. In deiner Karte zapfst du nur den Tilserver an.
was mich (und vielleicht auch wyo in dem Zusammenhang interessieren würde, wo ich den dazugehören AJAX-Source Code
finde. Unter http://trac.openstreetmap.org/browser/sites
sind ja einige sites aufgelistet, aber “www.openstreetmap.org” selbst (nicht) mehr (?)
Ist das nicht Bestandteil des Rails Portes? http://wiki.openstreetmap.org/wiki/The_Rails_Port
Ich glaube da ist kein Ajax, der Server splittet (meiner Meinung nach) die Anfragen mit solchen Parametern auf und nimmt dann ne andere Seite zur Darstellung. Und diese Unterscheidung ist meines Erachtens im Rails drinne.
Wäre wirklich interessant gewesen, den Ajax-Code von OSM zu sehen. Eigentlich würde es mich interessieren, wie OpenLayers mit Ajax (Openlayers.Request) verwendet werden kann. Ein brauchbares Beispiel habe ich bis jetzt allerdings nicht gefunden und die Doku ist diesbezüglich praktisch inexistent.
Der Layer für die Darstellung einer Relation muss in der jeweiligen Webseite konfiguriert werden.
Die dazu nötige JavaScript-Elemente sind in der Klassenbibliothek von OpenLayers enthalten, so zum Beispiel: “OpenLayers.Util.getParameters()” zum Abgreifen eines URL-Parameters und " OpenLayers.Layer.GML" zur Verarbeitung von Vektordaten. Daraus kann man dann so was zusammenbauen:
(Das benutzte externe JavaScript-File ist für diese Anwendung komplizierter als nötig, es lädt rekursiv auch in Relationen enthaltene Relationen nach)
Die eigentliche Schwierigkeit besteht darin, dass JavaScript keine Verbindung zu fremden Server aufbauen kann.
Die Seite www.openstreetmap.org darf die Relationsdaten abfragen, weil die auf dem gleichen Server liegen.
Eine Seite auf deinem Server hat dieses Privileg nicht.
Du musst also letztendlich auf Deinem Server eine Proxyfunktion einrichten, so dass Dein JavaScript sich mit Deinem Server verbindet, der die Daten bei OSM abholt und dann an den Browser weiterleitet.
Hat da etwas geändert, dass die Seite nicht mehr geht? Ich kann den Quelltext der Seite nicht mehr abrufen.
Ich wollte nochmals nachschauen wie das mit dem Zentrieren geht, ich kann keinen Aufruf von zoomMapToMyBounds in osm_relation.js finden. Warum erfolgt der Aufruf nicht innerhalb von osm_relation.js?