OL3: GetFeature von Schichten, die durch Koordinieren
Möchte ich, um die Funktion der Schicht zu koordinieren.
Darüber hinaus will ich zum öffnen dieser Funktion in einem popup, das ich gelöst haben, die bisher von einem onclick-Ereignis. Aber ich möchte zu verwirklichen, indem Sie die Koordinaten der Funktion und öffnen das popup der featue.
Habe ich eine Ebene mit der Karte und eine Schicht mit den Eigenschaften:
if (trackMap != null) {
for (var i = 0; i < trackMap.length; i++) {
var trackInfo = trackMap[i];
lat = parseFloat(trackInfo.lat);
lon = parseFloat(trackInfo.lon);
var layergpx = new ol.layer.Vector({
source: new ol.source.Vector({
parser: new ol.parser.GPX(),
url: '${contextRoot}/gps/gpx2' + trackInfo.url
})
});
layers.push(layergpx);
}
}
Möchte ich, um die Funktion dieser Schicht in eine andere Javascript-Funktion.
Wie ich, öffnet sich ein pop-up indem Sie auf die Karte:
/**
* The Click Event to show the data
*/
var element = document.getElementById('popup');
var popup = new ol.Overlay({
element: element,
positioning: ol.OverlayPositioning.BOTTOM_CENTER,
stopEvent: false
});
map.addOverlay(popup);
map.on('singleclick', function(evt) {
map.getFeatures({
pixel: evt.getPixel(),
layers: vectorLayers,
success: function(layerFeatures) {
var feature = layerFeatures[0][0];
if (feature) {
var geometry = feature.getGeometry();
var coord = geometry.getCoordinates();
popup.setPosition(coord);
$(element).popover({
'placement': 'top',
'html': true,
'content': feature.get('desc')
});
$(element).popover('show');
} else {
$(element).popover('destroy');
}
}
});
});
Aber ich will dieses feature nicht geöffnet werden durch anklicken auf der Karte, aber bei der Eingabe eine Koordinate in einem textfield und die Karte öffnet sich dieses pop-up, wie Sie in das onclick-Ereignis.
- Von dem, was verstanden, du möchtest eine Funktion von dieser layergpx Schicht, richtig? Warum, wollen Sie nicht erstellen Sie das popup von der callback-Funktion der Auswahl? Sie können jede JS-Funktion als callback.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf dieses Beispiel, um zu sehen, wenn es dir hilft:
http://openlayers.org/en/latest/examples/kml.html
Karte.getFeatures() hat diese Erfolgs-callback, wo es liefert die Funktionen der Schichten in Schichten angelegt: [vector]. Passen Sie es am Willen zu bekommen, was Sie brauchen.
=== Update ===
In der OpenLayers 3 ist ein Map-Objekt Sie haben eine Funktion: getPixelFromCoordinate
ol.Map.prototype.getPixelFormCoordinate(ol.proj.transform([doubleLon, doubleLat], 'EPSG:4326', 'EPSG:3857'))
undmap.getPixelFormCoordinate(ol.proj.transform([doubleLon, doubleLat], 'EPSG:4326', 'EPSG:3857'))
Aber ich bin ein bisschen stecken oder verwirrt? :-/getPixelfromCoordinate
, und wenn ich der Funktion die variablegoog
,ol.vec.Mat4.multVec2
unbekannt sind