[Talk-at] S; Javascript Framework, um lokale .osm-Dateien darzustellen

Simon Legner simon.legner at gmail.com
Thu Mar 7 08:42:01 UTC 2013


Hallo!

> Hab ich mir schon angesehen, und die serverseitige Variante kurz
> ausprobiert: http://s8472.dyndns.org/osm/leaflet/POImap/arts_centre.html
> 
> Es geht hier um ein sehr begrenztes Gebiet (Graz) mit maximal 40 Punkten
> pro Karte. Daher schrecke ich etwas vor dem Programmieraufwand der
> Serverseite zurück, und hätte am liebsten eine rein clientseitige
> Lösung, dem ich ein .osm-file mit entsprechenden Tags (Icon-Name, Text
> und ev. Bildlink fürs Popup) gebe und gut ists.

Nett, meine POImap in action zu sehen. :-)

Folgendes Code-Schnipsel lädt eine OSM-XML-Datei via AJAX und zeigt die
geladenen Knoten auf der Karte an. 

> // load static POI
> // TODO replace URL by path to custom OSM file
> $.get('http://overpass-api.de/api/interpreter?data=node(847359534);out meta;', function (osm) {
>   $(osm).find('node').each(function (i, node) {
>     console.log(node, node);
>     $node = $(node);
>     var nodeObj = {
>       lat: $node.attr('lat'),
>       lon: $node.attr('lon'),
>       tags: {}
>     };
>     $node.find('tag').each(function (i, tag) {
>       $tag = $(tag);
>       nodeObj.tags[$tag.attr('k')] = $tag.attr('v');
>     });
>     bindPopupOnData(nodeObj);
>   });
> });

Du könntest das direkt unterhalb von
> $.getJSON(poiUrl, handleNodeWayRelations);
einbauen.

Eine weitere Anmerkung: Der Befehl
> map.on('moveend', loadPoi);
lässt alle POIs beim Verschieben der Karte neuladen. Die Idee dahinter
ist, dass man beispielsweise nie alle restaurants auf einmal laden
will, sondern nur jene aus dem aktuellen Kartenausschnitt. Vermutlich
ist das für dein Projekt nicht gewünscht.

Grüße
Simon






More information about the Talk-at mailing list