Как создать всплывающее окно с вектором на openlayers v4.6.5 - PullRequest
0 голосов
/ 23 апреля 2019

Я использую openlayers, и я создаю много векторных слоев, но я хочу поместить событие щелчка на один векторный слой.

function add_map_point(lat, lng) {
    var vectorLayer = new ol.layer.Vector({
        source:new ol.source.Vector({
            features: [new ol.Feature({
                geometry: new ol.geom.Point(ol.proj.transform([parseFloat(lng), parseFloat(lat)], 'EPSG:4326', 'EPSG:3857')),
            })]
        }),
        style: new ol.style.Style({
            image: new ol.style.Icon({
                anchor: [0.5, 0.5],
                anchorXUnits: "fraction",
                anchorYUnits: "fraction",
                src: "{{asset('marker.png')}}",
            }),
        })
    });
    map.addLayer(vectorLayer);
}

function map_points(){
    @foreach($data as $c)
        add_map_point({{$c->latitude}}, {{$c->longitude}}); 
    @endforeach    
}

1 Ответ

0 голосов
/ 28 апреля 2019

Пожалуйста, попробуйте добавить к вашей функции:

vectorLayer.set("name", "myLayer");
map.on("click", function(evt) {
   var feature = map.forEachFeatureAtPixel(evt.pixel,
       function(feature, layer) {
          if (feature) {
             console.log(layer.get("name") + " was clicked.");
        }
     });
  });
...