OpenLayers 比较有用的对象和属性
1.ol.interaction.Pointer
是管理地图down、move、up事件的基类,也用于管理地图拖拽事件。
构造函数结构如下:
new ol.interaction.Pointer(opt_options)
options包括的属性有:
handleDownEvent:处理地图的down事件。如果该事件返回true,drag队列开始执行。
handleDragEvent:处理地图的drag事件。当down事件返回true,鼠标在拖拽过程中该事件一直被触发。
handleEvent:当地图通知浏览器触发交互时调用该函数,通过返回FALSE,可终止其他交互事件的传播。
handleMoveEvent:在拖拽的过程中触发move事件。
handleUpEvent:捕获鼠标up事件。
2.updateWhileAnimating和updateWhileInteracting属性
默认情况下,当在和地图交互或者动画过程中,tile和vector图层会等待这些过程执行完后才会更新。我们可以通过两个属性禁止这样的现象,在vector图层中,必须在layer级别控制。而像tiled图层可以直接通过map级别控制。代码如下:
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.TileWMS({
url: 'http://demo.opengeo.org/geoserver/wms',
params: {
layers: 'ne_50m_land',
format: 'image/png'
},
wrapX: false
}),
name: 'Natural Earth Land'
}),
new ol.layer.Vector({
source: new ol.source.Vector({
format: new ol.format.GeoJSON({
defaultDataProjection: 'EPSG:4326'
}),
url: '../../res/world_countries.geojson',
wrapX: false
}),
name: 'World Countries',
headers: {
pop_est: 'integer',
gdp_md_est: 'integer'
},
type: 'polygon',
updateWhileAnimating: false,
updateWhileInteracting: false
})
],
view: new ol.View({
center: [0, 0],
zoom: 2,
extent: ol.proj.get('EPSG:3857').getExtent()
}),
loadTilesWhileAnimating: true,
loadTilesWhileInteracting: true
});
3.限制地图大小属性
只要继承至ol.layer.Base对象的图层都可通过wrapX:false限制图层在x轴方向重复;另外也可通过设置view的extend属性。
wrapX限制
var map = new ol.Map({
[…]
new ol.layer.Tile({
source: new ol.source.TileWMS({
[…]
wrapX: false
[…]
new ol.layer.Vector({
source: new ol.source.Vector({
[…]
wrapX: false