You are not logged in.
- Topics: Active | Unanswered
Announcement
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***
Pages: 1
#1 2013-06-16 20:59:53
- Ghostrider82
- Member
- Registered: 2010-05-25
- Posts: 132
onClick Event/Feature bei KML?
Hallo zusammen,
gibt es eine Möglichkeit, den Linien, die ich aus einer KML heraus generiere, ein Callback Event oder sowas zuzuweisen?
var data = new OpenLayers.Layer.Vector("KML", {
style : style,
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "xml.php",
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true
})
})
});Ich bin für jeden Tip zu haben....ich suche mir schon die Finger wund.
Last edited by Ghostrider82 (2013-06-17 07:24:37)
Offline
#2 2013-06-16 21:43:36
- wambacher
- Member

- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,769
- Website
Re: onClick Event/Feature bei KML?
Hallo zusammen,
gibt es eine Möglichkeit, den Linien, die ich aus einer KML heraus generiere, ein Callback Event oder sowas zuzuweisen?
var data = new OpenLayers.Layer.Vector("KML", { style : style, strategies: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol.HTTP({ url: "http://www.yourgps.de/tests/longtrack/xml2.php", format: new OpenLayers.Format.KML({ extractStyles: true, extractAttributes: true }) }) });Ich bin für jeden Tip zu haben....ich suche mir schon die Finger wund.
such dir was aus: http://openlayers.org/dev/examples/?q=click Dass die Daten per KML reinkommen , ist schnurzegal. Vektor ist Vektor.
Gruss
walter
Offline
#3 2013-06-17 09:16:44
- Ghostrider82
- Member
- Registered: 2010-05-25
- Posts: 132
Re: onClick Event/Feature bei KML?
Bitte entschuldige meine etwas plumpe Frageweise.
Ich habe nach diversen Tests und Herumsuchereien in irgendeinem Forenbeitrag gelesen, dass click-Events auf einem Vectorlayer gar nicht möglich sein.
Bevor ich dann aber weiter Stunden für eine Suche vergeude, die keine Ergebnisse liefert, habe ich gedacht: Ich frage hier.
Die auktuelle Lösung bei Verwendung einer GPX Datei sieht wie folgt aus:
var data = new OpenLayers.Layer.Vector("GPX", {
style : style,
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "gpx.gpx",
format: new OpenLayers.Format.GPX()
}),
style: {strokeColor: "green", strokeWidth: 5, strokeOpacity: 0.5},
projection: new OpenLayers.Projection("EPSG:4326")
});
map.addLayer(layer_mapnik);
map.addLayer(data);
selectControl = new OpenLayers.Control.SelectFeature(
[data],
{
clickout: true, toggle: false,
multiple: false, hover: false,
toggleKey: "ctrlKey", // ctrl key removes from selection
multipleKey: "shiftKey" // shift key adds to selection
}
);
map.addControl(selectControl);
selectControl.activate();
map.setCenter(new OpenLayers.LonLat(0, 0), 3);
data.events.on({
"featureselected": function(e) {
showStatus("selected feature "+e.data.Name+" on Vector Layer 1");
},
"featureunselected": function(e) {
showStatus("unselected feature "+e.feature.id+" on Vector Layer 1");
}
});Mal angenommen, das Format lautet:
<trkpt lat="49.771240" lon="8.814750">
<ele>188.520000</ele>
<time>2011-02-13T15:16:35.000Z</time>
</trkpt>Wie kann ich nun per Click an <ele> herankommen?
Offline
#4 2013-06-17 10:40:56
- maxbe
- Member
- Registered: 2010-01-19
- Posts: 3,255
- Website
Re: onClick Event/Feature bei KML?
Wie kann ich nun per Click an <ele> herankommen?
Die dürfte bei Dir in e.feature.ele stehen. Frag doch mal Firebug innerhalb der featureselected-Funktion, was in "e" alles drin ist.
Mit KML hab ich wenig zu tun, aber bei GPX gehts relativ einfach, Clicks auszuwerten. Allerdings kenne ich das für GPX-Dateien nur bei Tracks und Waypoints, nicht bei einzelnen Trackpoints.
Ich denke, das Beispiel für GPX ist auf KML übertragbar: Man hat irgendein Element namens "name", "ele" (...) und übergibt das an die featureselected-Funktion. Dort schaut man dann in evt.feature.attributes.... nach seinen Elementen und gibt sie hübsch formatiert aus...
Grüße, Max
PS: Die Position des Popups beim Klick auf den Track muss man auch noch schöner machen. Der "Mittelpunkt" der Linie ist nicht das, was der klickende Anwender erwartet ![]()
Last edited by maxbe (2013-06-17 11:20:37)
Offline
#5 2013-06-17 11:17:16
- Oranger Assistent
- Member
- Registered: 2013-04-07
- Posts: 92
Re: onClick Event/Feature bei KML?
Tach.
Mal angenommen, das Format lautet:
<trkpt lat="49.771240" lon="8.814750"> <ele>188.520000</ele> <time>2011-02-13T15:16:35.000Z</time> </trkpt>Wie kann ich nun per Click an <ele> herankommen?
Deine Aufgabenstellung triff auf zwei Herausforderungen:
1. Der Selection-Mechanismus liefert jeweils den ganzen Track als Line-Feature und damit auch die Attribute des Tracks und nicht die der Track-Elemente.
2. Die für das Einlesen von Tracks zuständige Methode “extractSegment” der Klasse “OpenLayers.Format.GPX” nutzt aus den Trackpoint-Elementen nur die Koordinaten lon und lat. Die Höhe und alles andere gehen beim Einlesen verloren. Daher kommst Du an sie auch nicht heran. Watt fott es, es fott.
Ich sehe folgende Lösung: Du müsstest zum einen die “extractSegment”-Methode so modifizieren, dass sie die Attribute bewahrt, die Dich interessieren, und zum anderen bei einem Selection-Ereignis die Komponenten des übergebenen Line-Features durchsuchen nach der Komponente, die der Klick-Position am nächsten liegt, und deren Attribute für die Anzeige nutzen.
Das funktioniert, scheint mir aber zu kompliziert. Das sollte einfacher gehen.
Vieleicht kann ein OpenLayers-Kundiger eine bessere Lösung aufzeigen?
Der Assistent
Last edited by Oranger Assistent (2013-06-17 13:25:01)
Offline
#6 2013-06-17 12:42:06
- wambacher
- Member

- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,769
- Website
Re: onClick Event/Feature bei KML?
Ich habe nach diversen Tests und Herumsuchereien in irgendeinem Forenbeitrag gelesen, dass click-Events auf einem Vectorlayer gar nicht möglich sein.
Ist zum Glück völliger Blödsinn, den du da irgendwo aufgeschnappt hast. Das Vektor-Layer ist - zumindest für mich - DAS Layer, mit dem man fast alles machen kann. Es kreisen zwar immer noch alte Beispiele und Hinweise rum, die aber alle von Vector "erschlagen" werden.
Bevor ich dann aber weiter Stunden für eine Suche vergeude, die keine Ergebnisse liefert, habe ich gedacht: Ich frage hier.
Das war und ist absolut ok so. Nur erkennt man nicht immer, ob ein Laie/Newbie fragt, oder ob es doch ein "Wissender" ist. Da kommt dann schon mal leicht der Hinweis auf RTFM ![]()
Da die Kollegen meine Abwesenheit "ausgenutzt" haben, bist du ja schon gut beraten worden.
Gruss
walter
Offline
Pages: 1