【发布时间】:2020-05-03 21:34:15
【问题描述】:
我在使用 Openlayers 3 地图时遇到了两个类似的问题。它们都与在没有焦点时刷新/重绘地图有关;即当鼠标不在它上面时。
1) 当鼠标悬停在一个国家/地区的轮廓上时,它会显示一个国家的轮廓,但当鼠标移开时它会变得透明。但是,如果该国家/地区位于地图视图的边缘,并且我将鼠标移出地图的该边缘,则该国家/地区将保持轮廓,因为地图永远不会看到鼠标在该国家/地区以外的其他区域上。
2) 当我单击一个国家/地区时,它会永久突出显示(即图层变得可见)。我在地图上有一个按钮,单击该按钮会将所有图层重置为透明。当我点击按钮时,什么都没有发生,直到我将鼠标移回地图上,此时变化变得明显并且图层消失了。
有没有办法在鼠标不在地图上时强制更新地图?
我尝试了几个选项:map.redraw()、layer.redraw()、source.refresh()、map.refresh()、layer.refresh()、source.refresh()、document.getElementById("map").focus() 以及我能找到的任何其他建议来强制刷新地图,但在鼠标移到地图上之前,它们都不起作用。
【问题讨论】:
-
你试过
map.render()或map.renderSync()吗? -
是的,我已经尝试了这两种方法,但直到我再次将鼠标悬停在地图上之前仍然没有效果。
-
也许我应该澄清一下。当鼠标悬停在一个国家/地区时,该国家/地区上的矢量样式会变为暗色(颜色从 0,0,0,0 变为 0,0,0,.2)。当鼠标离开地图时,样式不会更新。我在代码中设置样式,但在鼠标回到地图上之前它不会在地图上改变。
-
您使用的是 Select 交互吗?如果是,是哪个版本的 OpenLayers?
-
在下面查看我的评论。此问题已关闭。
标签: javascript focus openlayers