作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 openlayers map 上有一个 ol.geom.Point 类型的点要素,单击该要素时会显示一个弹出窗口。弹出窗口是 <div>
我作为叠加层添加的元素,每当我在 map 上找到单击事件的功能时,我都会显示和隐藏叠加层。
问题是当您在 map 上放大或缩小时,叠加层会错位(tip 和 div)。但是,如果您再次单击功能,它会正确显示,但每次单击都不理想。我也在尝试在每个世界中显示叠加层,每个世界的问题都是一样的,它错位了。
预期的结果是每当我点击 map 项时,叠加层应该显示在 map 项上,无论放大或缩小。
这是一个可以重现问题的 fiddle : Openlayers overlay JSFiddle
最佳答案
精确定位在功能上,但在您点击的世界中:
var worldWidth = ol.extent.getWidth(view.getProjection().getExtent());
var world = Math.floor((map.getCoordinateFromPixel(evt.pixel)[0] + worldWidth/2)/worldWidth);
let coordinate = feature.getGeometry().getCoordinates();
content.innerHTML = feature.get('desc');
popup.setPosition([coordinate[0] + world*worldWidth, coordinate[1]]);
关于javascript - Openlayers如何更新 map 移动事件上的叠加位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54303208/
我是一名优秀的程序员,十分优秀!