Вы можете вызывать функцию getData()
внутри события singleclick
, когда имеется особенность на нажатом пикселе. Надеюсь, этот образец поможет вам.
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
view: new ol.View({
projection: 'EPSG:4326',
center: [49, 40],
zoom: 8
})
});
var layer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [new ol.Feature({
geometry: new ol.geom.Point([49, 40]),
id: 1,
name: 'My Point',
day: (new Date()).getDay(),
month: (new Date()).getMonth(),
year: (new Date()).getYear()
})]
}),
style: new ol.style.Style({
image: new ol.style.Circle({
radius: 15,
fill: null,
stroke: new ol.style.Stroke({ color: 'red', width: 1 })
})
})
});
map.addLayer(layer);
map.on('singleclick', function (event) {
// getData(event.coordinate);
map.forEachFeatureAtPixel(event.pixel, function (feature, layer) {
getData(feature.getProperties());
// getData(layer.getProperties());
}, {
hitTolerance: 5
});
});
function getData(data) {
console.log(data);
console.log(data.id);
}