迁移地图以使用OL3。当我调用map.getView()。setCenter或map.getView()。缩放地图时,地图行为正确,但我的矢量数据层不再可见。我必须在地图上进行MouseWheelZoom交互,然后显示数据层。这类似于此未答复的Stackoverflow帖子(How to reload WMTS Tiles after progromattically changing the map center and zoom?)中发现的问题,除了我的地图图块正确渲染,它是我的矢量图层不可见。
我正在创建WMS切片图层并使用以下内容进行贴图:
div = @get 'element'
layers = [ new (ol.layer.Tile)(
title: 'Imagery'
source: new (ol.source.TileWMS)(
url: WMS_VMAP_MAP_SERVER_URL
name: 'VMAP'
params:
LAYERS: 'basic'
FORMAT: 'image/png'
TRANSPARENT: true)) ]
map = new (ol.Map)(
interactions: ol.interaction.defaults().extend([ new (ol.interaction.Select)(style: selectedIconStyle) ])
controls: ol.control.defaults().extend([ new (ol.control.ScaleLine)(units: 'nautical') ])
layers: layers
target: div
view: new (ol.View)(
projection: 'EPSG:4326'
center: [
0
0
]
zoom: 1
maxResolution: 0.703125))
使用以下功能创建单个功能:
feature = new ol.Feature({
geometry: new ol.geom.Point([lng, lat], 'XY'),
title: 'some title'
latitude: lat
longitude: lng
})
vectorSource.addFeature feature
使用以下方法添加矢量图层:
vectorLayer = new (ol.layer.Vector)(
source: vectorSource #new (ol.source.Vector)({})
style: circleIconStyle #my defined icon style
id: 'MYDATA'
)
map.addLayer vectorLayer
当以下事件触发......
map.on('singleclick', (e) ->
map.forEachFeatureAtPixel(e.pixel, ((feature, layer) ->
...
)
)
...作为事件处理程序的一部分我正在这样做:
map.getView().setCenter [
feature.get('longitude')
feature.get('latitude')
]
map.getView().setZoom 3
地图正确居中和缩放,但默认情况下我的矢量图层数据不会显示。在setCenter或放大视图后,是否有其他我没有做或调用以刷新数据层?或者在我如何设置它时我是否有其他不正确的东西?
感谢名单
答案 0 :(得分:1)
固定。问题是坐标被视为几何的字符串,而不是数字。修复是为了确保设置坐标的位置,它们被明确地视为一个数字,以消除方程中的模糊性。所以无论我在地图代码中设置lat / lon(或纬度/经度),我都使用Number(lat)和Number(lon)代替。
Eric Lemoine回答位于http://comments.gmane.org/gmane.comp.gis.openlayers.devel.ol3/4773的另一个问题的道具,因为在那里我看到了他对该标记显示问题的解决方案,并认为它也可以解决我的问题。它确实如此。