【发布时间】:2015-05-02 04:14:32
【问题描述】:
迁移地图以使用 OL3。当我在地图上调用 map.getView().setCenter 或 map.getView().zoom 时,地图的行为正确,但我的矢量数据层不再可见。我必须在地图上进行 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 或缩放视图之后刷新数据层,我是否还有其他事情没有做或调用?还是我在设置方面有什么不正确的地方?
感谢
【问题讨论】: