URL-Parameter "relation=..." etc

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?

Wyo

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.

Im Quelltext von OSM steht der Aufruf so:

Gruß,
ajoessen

Hi,

was mich (und vielleicht auch wyo :wink: 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 (?)

Ciao,
Frank

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.

Danke fuer den Hinweis.
Da gibt es im Wiki noch einiges zu entruempeln :wink:

Ciao,
Frank

Da wird also aus dem Wert 1273572 ein 969505? Wie ist da der Zusammenhang, wo kann man das abfragen?

Wyo

Ich habe jetzt echt keine Lust mich auch noch mit Rails zu beschäftigen.

Wyo

Hi,

ajoessen wird irgendeine als Beispiel genommen haben.

Beim Aufruf von
http://www.openstreetmap.org/?relation=1273572

steht im Quelltext

  setMapLayers("M");





  var url = "/api/0.6/relation/1273572";

  
    url += "/full";

Passt scho.

Ciao,
Frank

Na ja.

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.

Wyo

Nahmd,

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:

http://www.netzwolf.info/kartografie/openlayers/relation.htm?id=60967,60980

(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.

Gruß Wolf

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?

Wyo

Nahmd,

Habs überprüft: die Seite ist da.

Sorry, das ist eine Codeleiche. Die Routine “zoomMapToOurBounds” macht die Arbeit.

Gruß Wolf

Heute Vormittag ging sie nicht.

Aha, danke.

Wyo