source 是 Layer 的重要組成部分甜奄,表示圖層的來源关串,也就是服務(wù)地址。
除了在構(gòu)造函數(shù)中指定外踩寇,還可以使用 layer.setSource(source)
稍后指定啄清。
一、包含的類型
- ol.source.BingMaps 姑荷,必應(yīng)地圖的切片數(shù)據(jù)盒延,繼承自
ol.source.TileImage
; - ol.source.Cluster鼠冕,聚簇矢量數(shù)據(jù)添寺,繼承自
ol.source.Vector
; - ol.source.ImageCanvas懈费,數(shù)據(jù)來源是一個(gè)
canvas
元素计露,其中的數(shù)據(jù)是圖片,繼承自ol.source.Image
憎乙; - ol.source.ImageMapGuide票罐,Mapguide 服務(wù)器提供的圖片地圖數(shù)據(jù),繼承自
ol.source.Image
泞边,fireol.source.ImageEvent
该押; - ol.source.ImageStatic,提供單一的靜態(tài)圖片地圖阵谚,繼承自
ol.source.Image
蚕礼; - ol.source.ImageVector,數(shù)據(jù)來源是一個(gè)
canvas
元素梢什,但是其中的數(shù)據(jù)是矢量來源ol.source.Vector
奠蹬,繼承自ol.source.ImageCanvas
; - ol.source.ImageWMS嗡午,WMS 服務(wù)提供的單一的圖片數(shù)據(jù)囤躁,繼承自
ol.source.Image
,觸發(fā)ol.source.ImageEvent
荔睹; - ol.source.MapQuest狸演,MapQuest 提供的切片數(shù)據(jù),繼承自
ol.source.XYZ
僻他; - ol.source.OSM严沥,OpenStreetMap 提供的切片數(shù)據(jù),繼承自
ol.source.XYZ
中姜; - ol.source.Stamen,Stamen 提供的地圖切片數(shù)據(jù),繼承自
ol.source.XYZ
丢胚; - ol.source.TileVector翩瓜,被切分為網(wǎng)格的矢量數(shù)據(jù),繼承自
ol.source.Vector
携龟; - ol.source.TileDebug兔跌,并不從服務(wù)器獲取數(shù)據(jù),而是為切片渲染一個(gè)網(wǎng)格峡蟋,繼承自
ol.source.Tile
坟桅; - ol.source.TileImage,提供切分成切片的圖片數(shù)據(jù)蕊蝗,繼承自
ol.source.Tile
仅乓,觸發(fā)ol.source.TileEvent
; - ol.source.TileUTFGrid蓬戚,TileJSON 格式 的 UTFGrid 交互數(shù)據(jù)夸楣,繼承自
ol.source.Tile
; - ol.source.TileJSON子漩,TileJSON 格式的切片數(shù)據(jù)豫喧,繼承自
ol.source.TileImage
; - ol.source.TileArcGISRest幢泼,ArcGIS Rest 服務(wù)提供的切片數(shù)據(jù)紧显,繼承自
ol.source.TileImage
; - ol.source.WMTS缕棵,WMTS 服務(wù)提供的切片數(shù)據(jù)孵班。繼承自
ol.source.TileImage
; - ol.source.XYZ挥吵,XYZ 格式的切片數(shù)據(jù)重父,繼承自
ol.source.TileImage
; - ol.source.Zoomify忽匈,Zoomify 格式的切片數(shù)據(jù)房午,繼承自
ol.source.TileImage
。
上面介紹的都是可以實(shí)例化的類丹允,還有一部分基類郭厌,不能被實(shí)例化,只負(fù)責(zé)被繼承雕蔽,有:
- ol.source.Image折柠,提供單一圖片數(shù)據(jù)的類型,直接繼承自
ol.source.Source
批狐; - ol.source.Tile扇售,提供被切分為網(wǎng)格切片的圖片數(shù)據(jù)前塔,繼承自
ol.source.Source
; - ol.source.Vector承冰,提供矢量圖層數(shù)據(jù)华弓,繼承自
ol.source.Source
;
二困乒、用法說明
1. ol.source.Vector
矢量圖層的數(shù)據(jù)源
1.1 事件
包含四個(gè)事件寂屏,addfeature
,changefeature
娜搂,clear
迁霎,removefeature
。
addfeature
百宇,當(dāng)一個(gè)要素添加到 source 中觸發(fā)考廉。
changefeature
,當(dāng)要素變化時(shí)觸發(fā)恳谎。
clear
芝此,當(dāng) source 的 clear 方法調(diào)用時(shí)候觸發(fā)。
removefeature
因痛,當(dāng)要素移除時(shí)候觸發(fā)婚苹。
1.2 參數(shù)
接受的參數(shù):
/**
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
* features: (Array.<ol.Feature>|undefined),
* format: (ol.format.Feature|undefined),
* loader: (ol.FeatureLoader|undefined),
* logo: (string|olx.LogoOptions|undefined),
* strategy: (ol.LoadingStrategy|undefined),
* url: (string|undefined),
* wrapX: (boolean|undefined)}}
* @api
*/
- attribution,地圖右下角的 logo 包含的內(nèi)容鸵膏;
- features膊升,地理要素,從字符串讀取的數(shù)據(jù)谭企;
- format廓译,url屬性設(shè)置后,加載要素使用的數(shù)據(jù)格式债查,采用異步的 AJAX 加載非区;
- loader,加載要素使用的加載函數(shù)盹廷;
- logo征绸,logo包含的內(nèi)容;
- strategy俄占,加載要素使用的策略管怠,默認(rèn)是 一次性加載所有要素;
- url缸榄,要素?cái)?shù)據(jù)的地址渤弛;
- wrapX,是否在地圖水平坐標(biāo)軸上重復(fù)甚带,默認(rèn)是
true
她肯。
1.3 實(shí)例
features 方法
假如有一個(gè)包含空間數(shù)據(jù)的字符串佳头,geojsonObject,是GeoJSON字符串格式辕宏,那么可以用來初始化一個(gè)圖層畜晰。
var vectorSource = new ol.source.Vector({
features: (new ol.format.GeoJSON()).readFeatures(geojsonObject)
});
var vectorLayer = new ol.layer.Vector({
source: vectorSource,
style: style
});
map.addLayer(vectorLayer);
url + format 方法
如果有一個(gè)文件作為數(shù)據(jù)源,那么可以配置 url 屬性來加載數(shù)據(jù):
var vectorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
url: 'data/geojson/countries.geojson',
format: new ol.format.GeoJSON()
})
});
這兩種方法中都會(huì)指定數(shù)據(jù)來源格式瑞筐, 矢量數(shù)據(jù)源支持的格式包含很多:gml、EsriJSON腊瑟、geojson聚假、gpx、igc闰非、kml膘格、osmxml、ows财松、polyline瘪贱、topojson、wfs辆毡、wkt菜秦、wms capabilities(兼容 wms 的格式)、 wms getfeatureinfo舶掖、 wmts capabilities球昨、xlink、xsd等格式眨攘。這些格式都有readFeatures 主慰、readFeature 和readGeometry 方法用于讀取數(shù)據(jù)。
2. ol.source.Tile
提供被切分為切片的圖片地圖數(shù)據(jù)
可配置的選項(xiàng)
/**
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
* extent: (ol.Extent|undefined),
* logo: (string|olx.LogoOptions|undefined),
* opaque: (boolean|undefined),
* tilePixelRatio: (number|undefined),
* projection: ol.proj.ProjectionLike,
* state: (ol.source.State|undefined),
* tileGrid: (ol.tilegrid.TileGrid|undefined),
* wrapX: (boolean|undefined)}}
*/
與 vector 一樣的選項(xiàng)就不介紹了鲫售,介紹與 vector 特有的選項(xiàng):
- extent共螺,地圖視圖默認(rèn)的坐標(biāo)范圍;
- opaque情竹,是否透明藐不,一個(gè)布爾值,默認(rèn) false鲤妥;
- tilePixelRatio佳吞,切片的大小調(diào)整選項(xiàng),如 256 × 256棉安,和 512 × 512底扳;
- projection,投影坐標(biāo)系贡耽;
- state衷模,地圖所處的狀態(tài)鹊汛,包括
undefined
,loading
阱冶,ready
刁憋,error
; - tileGrid木蹬,覆蓋在地圖上的格網(wǎng)至耻;
接受的事件
- tileloadstart,切片開始加載時(shí)觸發(fā)的事件镊叁;
- tileloadend尘颓,切片加載完畢觸發(fā)事件;
- tileloaderror晦譬,切片加載出錯(cuò)時(shí)的處理疤苹。
3. ol.source.Image
提供單一的圖片地圖。
可以配置的選項(xiàng)
/**
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
* extent: (null|ol.Extent|undefined),
* logo: (string|olx.LogoOptions|undefined),
* projection: ol.proj.ProjectionLike,
* resolutions: (Array.<number>|undefined),
* state: (ol.source.State|undefined)}}
*/
- resolutions敛腌,地圖分辨率卧土。其他的選項(xiàng)都與以上的一樣。
觸發(fā)的事件
- imageloadstart像樊,圖片地圖開始加載觸發(fā)的事件尤莺;
- imageloadend,圖片地圖加載完畢觸發(fā)的事件凶硅;
- imageloaderror缝裁,圖片地圖加載出錯(cuò)時(shí)觸發(fā)的事件。
四足绅、總結(jié)
source 是 layer 中必須(required)的選項(xiàng)捷绑,定義了地圖數(shù)據(jù)的來源,與數(shù)據(jù)有關(guān)的函數(shù)氢妈,如addfeature粹污、getfeature等函數(shù)都定義在 source 中,而且數(shù)據(jù)源支持多種格式首量。