Openlayer5 api如何获取单击图层行为是在哪一层

问题是在图层上单击标注,弹出popup,即Overlay层,如何判断我当前单击的是弹出层,而不是vector层或其他。

查了官网的api,找到个貌似可以的,不行。

1、 var feature = Map.forEachLayerAtPixel(evt.pixel, function (feature) {

      debugger
      return feature
    })
    
    单击添加的标注就会返回vector矢量层,单击Map其他地方就

报错:Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.

阅读 3.6k
1 个回答
新手上路,请多包涵

我这个例子可以获取到当前图层上的feature,能判断出是弹出层
constructor(){
state.map.on('click', this.clickSouth);
}

clickSouth = (evt) => {

    let coordinate = evt.coordinate;
    /* 声明点击后的坐标 */
    this.clickSouth = coordinate;
    /* 获取当前坐标点 */
    let pixel = this.mapObj.map.getEventPixel(evt.originalEvent);
    let feature = this.mapObj.map.forEachFeatureAtPixel(pixel, function (feature, layer) {
        if (layer === this.mapObj.portLayer) {
        ......
        }  

}

Click(feature,layer,element,popLayer){

    $("#popup-content").html(feature.G.disInfo);
    popLayer.setPosition(this.clickSouth);
    $("#popup").removeClass('popup_');
} 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题