Hallo Rainer,

Ich habe auch nach so etwas gesucht, aber für OpenLayers kein HowTo
gefunden. Anhand diversen Einzelinformationen habe ich es dann doch
geschafft.

Vielleicht können wir ja zusammen das OL-HowTo
http://wiki.openstreetmap.org/wiki/DE:Karte_in_Webseite_einbinden
so ergänzen, dass der Benutzer mit einer Overpass-Abfrage einen individuellen Layer hinzufügen kann :-)

Vielleicht einfach ein weiterer Tab "2. Layer"?

Dort könnte man folgendes darstellen:
1. wie erstelle ich eine passende Overpass-Abfrage
2. wo speichere ich die Ergebnisse? in welchem Format
3. wie zeige ich die Ergebnisse als Layer
   (Code für Copy und Paste)

Beispiel:
- Grenze einer bestimmten Gemeinde
- alle Trinkwasserbrunnen, Sitzbänke, Restaurants, ...
- alle Wanderwege

Ich teste das grad mit der Gemeinde Simmelsdorf [1]
und den Sitzbänken [2]

Unklar ist mir, wie man das alles nun in ein layer.js schreibt,
das Popup hübsch gestaltet,
und alles in das HTML einbaut.

Vielleicht können wir das als Beispiel
im Tab "2. Layer" detailliert beschreiben.

Wir könnten auch Dein Beispiel nehmen:

Entscheidend war, dass die Daten nicht als JSON sondern im
OSM-XML-Format abgerufen werden. Den OL-Layer erzeuge ich so:

var layer = new OpenLayers.Layer.Vector(layername, {
     protocol: new OpenLayers.Protocol.HTTP({
         url:
'http://overpass-api.de/api/interpreter?data=[timeout:25];(node["amenity"="bicycle_parking](42.327,1.72,42.942,3.26););out
body;>;out skel qt;',
         format: new OpenLayers.Format.OSM({ignoreExtraDims: true}),
         projection: new OpenLayers.Projection("EPSG:4326")

     }),
     strategies: [new OpenLayers.Strategy.Fixed()],
     projection:  map.displayProjection,
     extractAttributes: true,
     styleMap: new OpenLayers.StyleMap({
         "default": new OpenLayers.Style({
             externalGraphic: icon,
             graphicWidth:21,
             graphicHeight:25,
             graphicXOffset:-10,
             graphicYOffset:-25  ,
             graphicZIndex: 1
         },
         OpenLayers.Feature.Vector.style["default"])
     }),
});

Wenn ich das richtig verstanden habe, gibt es vier Möglichkeiten:
a) Daten bei jedem Laden der Karte neu holen
b) Daten einmal holen und speichern,
   und beim Laden der Karte nur den Speicherinhalt anzeigen
c) Daten per Cron täglich holen
   und beim Laden der Karte den aktualisierten Speicherinhalt anzeigen
d) beim Laden der Karte den aktualisierten Speicherinhalt anzeigen
   plus ein Button zum händischen aktualisieren der Daten

die von Benjamin angesprochene Lösung mit Cron sinnvoll.
In diesem Fall ersetzt man den Url der Overpass-Abfrage
mit dem Url der per Cron erzeugten Datei.

Mit herzlichem Gruss,
Markus

[1] Simmelsdorf:
http://lau-net.de/baerlocher/osm/vvh-baenke/vvh-baenke.html

[2] Overpass-Turbo:
/*
This has been generated by the overpass-turbo wizard.
The original search was:
“amenity= bench in Simmelsdorf”
*/
[out:json][timeout:25];
// fetch area “Simmelsdorf” to search in
{{geocodeArea:Simmelsdorf}}->.searchArea;
// gather results
(
    // query part for: “boundary=administrative and name=Simmelsdorf”
  relation["boundary"="administrative"]["name"="Simmelsdorf"];
  // query part for: “amenity=bench”
  node["amenity"="bench"](area.searchArea);
  way["amenity"="bench"](area.searchArea);
  relation["amenity"="bench"](area.searchArea);
);
// print results
out body;
>;
out skel qt;


_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an