Используйте событие click в Angular + Openlayers, чтобы обнаружить нажатый слой - PullRequest
0 голосов
/ 25 марта 2019

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

Я сделал это раньше, но только с использованием одного слоя. Теперь у меня их несколько, и я хотел бы знать, на какой слой я нажимаю, чтобы получить информацию из геосервера.

capa1WMS:TileLayer;
map:Map;

...

getDatosCapaWMS(url:string): Observable<any>{
    return this.http.get(url);
}

clickMapa(event:any):void{
    if(this.capa1WMS.getSource()!=null){
      var url = this.capa1WMS.getSource().getGetFeatureInfoUrl(
        this.map.getEventCoordinate(event), this.view.getResolution(), this.view.getProjection(),
        {'INFO_FORMAT': 'application/json'});
      this.getDatosCapaWMS(url).subscribe(data => { 

        //stuff

    });
    }   
}  

И мой HTML-код

<div id="map" class="map" (click)="clickMapa($event)"></div>

Я видел, что у openlayers есть метод forEachFeatureAtPixel(), но я не заставил его работать

1 Ответ

0 голосов
/ 27 марта 2019

Хорошо, Майк дал решение

this.map.forEachLayerAtPixel(this.map.getEventPixel(event)), чтобы получить слои, которые будут использоваться для .getSource().getGetFeatureInfoUrl()

...