OpenLayers 5-单击有点位移

时间:2018-07-27 07:57:09

标签: click gis openlayers feature-selection openlayers-5

我担心地图中的某些问题。 click-Event正常运行,但是它向右移了一点,这意味着如果我单击某个功能的左侧(可能是6像素左右),它会选择该功能,但实际上我没有单击在上面。这意味着,如果彼此相邻有2个要素,而我单击靠近左侧要素的边框,则单击右侧要素而不是左侧要素。 感觉就像是地图注意到了向右一点的点击。有人也有这个问题吗?

我教过OL处理EPSG:25832,因为我们通常在使用它,所以我认为这就是问题所在。一遍又一遍地切换所有EPSG之后,我发现问题出在哪里,而与使用哪个EPSG无关。

我听说了hitTolerance,因此将其设置为0,只是为了进行测试。

在这里创建我的地图:

map = new Map({
    controls: defaultControls().extend([
    new FullScreen()
]),
  target: 'map-container',
  layers: [
    new TileLayer({
      source: new XYZSource({
        url: 'http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg',
        projection: 'EPSG:3857'
      })
    })
  ],
  interactions: defaultInteractions({ doubleClickZoom: false }), //deaktiviert Zoom bei Doppelklick
  view: new View({
    center: [630114.604, 5629466.731],
    projection: 'EPSG:25832',
    //extent: transformExtent([4, 46, 16, 56], 'EPSG:4326', projectionName),
    zoom: 2,
    minZoom: 2
  }),
  controls: defaultControls({ "attribution": false }),
});

这是Select-Interaction的添加(问题在于每个交互,这只是我添加它们的示例):

function addSelectInteraction() {
var select = new Select({
source: edit
});
select.on('select', function(evt) {
    for(var i=0; i<evt.selected.length; i++) {
        if(document.getElementById("checkbox" + evt.selected[i].getId()).checked == true){
            console.log("Deselect " + evt.selected[i].getId());
            deselectFeature(evt.selected[i]);
        } else {
            console.log("Select " + evt.selected[i].getId());
            selectFeature(evt.selected[i]);
        }
        select.getFeatures().clear();
    }
});
select.set("name", "select");
addTool(select);

}

selectFeature(feature)只是设置该功能的样式,因此在这里没有影响。 这里是我教OL如何处理EPSG.25832(带有proj4)的方法:

var projectionName = 'EPSG:25832';
proj4.defs(projectionName, '+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs');
register(proj4);

也许有人也有这个问题?

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。

我在JavaScript代码中向HTML添加了一些内容,而地图对此一无所知。添加所有内容后,我只需要map.updateSize(),它现在就可以正常工作了。