[osm-bnsu] Overpass-Landkarten

Roland Olbricht roland.olbricht at gmx.de
Mo Dez 3 10:33:05 CET 2012


Hallo Georg,
 
> So eine Convert-Form ist etwas Feines (eine Verlinkung wäre schön,
> vielleicht komme ich noch heute Abend dazu), aber ich frage mich natürlich
> auch, wie das in einem eigenen Projekt aussehen könnte.

Das hängt davon ab, wie eigen es werden soll. Der schnellste Weg, eine ähnliche Landkarte zu haben, ist die von Convert zurückgelieferte HTML-Datei abzuspeichern und weiterzuverwenden.

Diese hängt ab

- von OpenLayers selbst

- von den openstreetmap.org-Tiles in
<script src="http://openstreetmap.org/openlayers/OpenStreetMap.js"></script>
und
layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");

- von der Overpass API in
<script src="http://overpass-api.de/overpass.js"></script>
und
          map.addLayers([
              make_layer("/api/interpreter?data=%28way%5B%22name%22%3D%22Schlo%C3%9Fstra%C3%9Fe%22%5D%28bbox%29%3B%3E%3B%29%3Bout%20skel%3B%0A", "blue")
          ]);
Hier steht auch die Abfrage. Von einem anderen Server aus müsste hier
make_layer("/api/...
zu
make_layer("http://overpass-api.de/api/...
geändert werden.

Solange man die beiden Elemente
  <div id="statusline" style="font-size:24pt; font-weight:bold; font-family:sans-serif">No status set yet.</div>
  <div id="map" class="smallmap"></div>
einbindet sowie alle script-Elemente, kann man dann die Abfrage mit beliebigem anderem HTML-Code kombinieren.

Ändert man die beteiligten JavaScript-Dateien, indem man sie herunterlädt und verändert, hat man deutlich mehr Flexibilität und kann sowohl die Server als auch andere Frameworks verwenden.

Die Servernamen lassen sich wie oben beschrieben austauschen, um die Quelle der Skripte, die Quelle der Tiles oder die Overpass-Instanz zu wechseln.

Mit Leaflet statt OpenLayers kann man vermutlich ebenfalls arbeiten, aber das habe ich noch nicht probiert. OpenLayers generiert Abfragen der Form
http://overpass-api.de/api/interpreter?data=(way["name"="Schloßstraße"](bbox);>;);out skel;&bbox=7.0,50.6,7.3,50.8
wobei der Teil "&bbox=7.0,50.6,7.3,50.8" von OpenLayers auf Basis des angezeigten Kartenausschnitts stammt. Overpass API ersetzt dann in der Abfrage alle Vorkommen von "(bbox)" durch die Bbox aus dem zweiten Parameter, wobei die Bbox wie von OpenLayers als Lon-Lat erwartet wird. Leaflet benutzt, soweit ich weiß, ebenfalls dieses Format, so dass auch dieser Wechsel möglich sein sollte, ich es aber noch nicht erprobt habe.

Viele Grüße,

Roland