Openlayers API整理

Openlayers API整理

openlayers

發(fā)布于 2019-09-05

一、創(chuàng)建地圖

1、地圖Map

創(chuàng)建地圖底圖:需要用new ol.Map({})

地圖map是由圖層layers、一個(gè)可視化視圖view、用于修改地圖內(nèi)容的交互interaction以及使用UI組件的控件control組成的。

(1)、創(chuàng)建基本地圖

letmap =newol.Map({target:'map',//對(duì)象指向layers: [//圖層newol.layer.Tile({//這里定義的是平鋪圖層source:newol.source.OSM()//圖層源 定義圖層映射協(xié)議})? ? ],view:newol.View({//視圖center: ol.proj.fromLonLat([37.41,8.82]),//地圖中心zoom:4//縮放層級(jí)})? });

(2)、屬性選項(xiàng)

newol.Map({target:'map',//對(duì)象映射:要將`map`對(duì)象附加到div,` map`對(duì)象將`target`作為參數(shù),值是`div`的`id`layers: [//圖層newol.layer.Tile({//這里定義的是平鋪圖層source:newol.source.OSM()//圖層源 定義圖層映射協(xié)議})? ? ],view:newol.View({//視圖center: ol.proj.fromLonLat([37.41,8.82]),//地圖中心zoom:4//縮放層級(jí)}),controls:[//最初添加到映射中的控件? 如未設(shè)置 使用默認(rèn)控件newol.control.Control({element:,//元素是控件的容器元素(DOM)。只有在開發(fā)自定義控件時(shí)才需要指定這一點(diǎn)render: ,//控件重新呈現(xiàn)時(shí)調(diào)用的函數(shù)target://如果想在映射的視圖端口之外呈現(xiàn)控件,指定目標(biāo)})? ? ],interactions:[//最初添加到映射中的交互 如未設(shè)置 使用默認(rèn)交互newol.interaction.Interaction({? ? ? ? ? ? handleEvent? ? ? ? })? ? ],overlays:[newol.Overlay()? ? ],maxTilesLoading:16,//同時(shí)加載的最大瓷磚數(shù) 默認(rèn)16loadTilesWhileAnimating:false,//loadTilesWhileInteracting:false,//? moveTolerance:1,//光標(biāo)必須移動(dòng)的最小距離(以像素為單位)才能被檢測(cè)為map move事件,而不是單擊。增加這個(gè)值可以使單擊地圖變得更容易pixelRatio:window.devicePixelRatio,//keyboardEventTarget:,//要監(jiān)聽鍵盤事件的元素})

(3)、地圖事件

地圖事件含義

click無拖動(dòng)單擊

dblclick無拖動(dòng)雙擊

moveend移動(dòng)地圖結(jié)束時(shí)

movestart移動(dòng)地圖開始時(shí)

pointerdrag當(dāng)拖動(dòng)指針時(shí)觸發(fā)

pointermove當(dāng)指針移動(dòng)時(shí)觸發(fā)。注意,在觸摸設(shè)備上,這是在地圖平移時(shí)觸發(fā)的,因此與mousemove不同

postcompose

postrender在映射幀呈現(xiàn)后觸發(fā)

precompose

propertychange當(dāng)屬性被更改時(shí)觸發(fā)

rendercomplete渲染完成時(shí)觸發(fā),即當(dāng)前視圖的所有源和tile都已加載完畢,所有tile都將淡出

singleclick一個(gè)真正的無拖放和無雙擊的單擊。注意,這個(gè)事件被延遲了250毫秒,以確保它不是雙擊

(4)、地圖方法

地圖方法功能

addControl(control)將給定的控件添加到地圖中

removeControl(control)從地圖中移除已給定的控件

addInteraction(interaction)將給定的交互添加到地圖中

removeInteraction(interaction)從地圖中移除已給定的交互

addLayer(layer)將給定的圖層添加到地圖的頂部

removeLayer(layer)從地圖中移除已給定的圖層

addOverlay(overlay)將給定的疊加層添加到地圖中

removeOverlay(overlay)從地圖中移除已給定的疊加層

forEachFeatureAtPixel(pixel, callback, opt_options)檢測(cè)與視圖端口上的像素相交的特性,并對(duì)每個(gè)相交的特性執(zhí)行回調(diào)。檢測(cè)中包含的層可以通過opt_options中的layerFilter選項(xiàng)配置

forEachLayerAtPixel(pixel, callback, opt_options)檢測(cè)在視圖端口上的像素處具有顏色值的層,并對(duì)每個(gè)匹配的層執(zhí)行回調(diào)。檢測(cè)中包含的層可以通過opt_layerFilter配置

getControls()獲取地圖控件

getCoordinateFromPixel(pixel)獲取給定像素的坐標(biāo)。這將返回地圖視圖投影中的坐標(biāo)。

getEventCoordinate(event)返回瀏覽器事件的視圖投影中的坐標(biāo)

getEventPixel(event)返回瀏覽器事件相對(duì)于視圖端口的地圖像素位置

getFeaturesAtPixel(pixel, opt_options)獲取視圖端口上與像素相交的所有特性

getInteractions()獲取地圖交互

getLayerGroup()獲取與此地圖關(guān)聯(lián)的圖層組

setLayerGroup(layerGroup)設(shè)置與此地圖關(guān)聯(lián)的圖層組

getLayers()獲取與此地圖關(guān)聯(lián)的圖層的集合

getOverlayById(id)通過其標(biāo)識(shí)符獲取覆蓋(overlay. getId()返回的值)。注意,索引將字符串和數(shù)字標(biāo)識(shí)符視為相同的。getoverlaybyid(2)將返回id為2或2的疊加層。

getOverlays()獲得地圖疊加

getPixelFromCoordinate(coordinate)獲取坐標(biāo)的像素。它接受地圖視圖投影中的坐標(biāo)并返回相應(yīng)的像素

getSize()獲取地圖尺寸

setSize(size)s設(shè)置地圖尺寸

getTarget()獲取呈現(xiàn)此映射的目標(biāo)。注意,這將返回作為選項(xiàng)或setTarget中輸入的內(nèi)容。如果這是一個(gè)元素,它將返回一個(gè)元素;如果是字符串,它會(huì)返回這個(gè)字符串

setTarget(target)設(shè)置要將地圖呈現(xiàn)的目標(biāo)元素

getTargetElement()獲取呈現(xiàn)此映射的DOM元素。與getTarget相反,這個(gè)方法總是返回一個(gè)元素,如果映射沒有目標(biāo),則返回null

getView()獲取地圖視圖。視圖管理中心和分辨率等屬性。

setView(view)設(shè)置地圖視圖

getViewport()獲取作為map視圖端口的元素

hasFeatureAtPixel(pixel, opt_options)檢測(cè)在viewport上是否與一個(gè)像素相交。可以通過opt_layerFilter配置在檢測(cè)中包含的層。

2、圖層Layers

定義圖層:地圖圖層layers:[...]組定義映射中可用的圖層組,用來盛放地圖上的各種元素,其在地圖上的顯示順序是按照數(shù)組中元素序列從下到上呈現(xiàn)的,可以直接在創(chuàng)建地圖時(shí)定義圖層,多個(gè)圖層的時(shí)候可以單獨(dú)定義。

constlayer =newol.layer.Vector({//這里定義的是圖層類型(Image/Title/Vector)source:newol.source.Vector(),//矢量圖層源? 源是用于獲取映射塊的協(xié)議【必須】style:[],//圖層樣式 【必須】feature:[],//圖層元素 【必須】})

添加指定圖層:map.addLayer(layer);

移除指定圖層:map.removeLayer(layer);

圖層是輕量級(jí)容器,從數(shù)據(jù)源Source獲取數(shù)據(jù)。

Sourced子類分別有,分別對(duì)應(yīng)不同圖層類:

ol.source.ImageSource()

ol.source.TileSource()

ol.source.VectorSource()

Source主要有以下屬性選項(xiàng):

newol.source.VectorSource({attributions:,//attributionsCollapsible:,//布爾值? 默認(rèn)為true projection:,//投影系state:'ready',//默認(rèn)為'ready'wrapX:false,//默認(rèn)為false})

ol.layer.Tile()和ol.layer.Image()圖層類都具有相同的屬性如下:

newol.layer.Tile/Image({//以下為圖層的屬性選項(xiàng), 都可設(shè)置,所以皆有g(shù)etter/setteropacity:2,//透明度 區(qū)間范圍為(0, 1) 默認(rèn)為1visible:true,//顯示屬性 布爾值 默認(rèn)為trueextent:[],//圖層渲染的邊界范圍。該層將不會(huì)在此范圍之外呈現(xiàn)zIndex:2,//圖層渲染的索引層級(jí)。在渲染時(shí),圖層將被排序,首先是z-idnex,然后是位置,當(dāng)為undefined時(shí),對(duì)于添加到映射的layers集合中的層,zIndex為0,或者當(dāng)使用該層的setMap()方法時(shí),zIndex為無窮大minResolution:3,//該層可見的最小分辨率(包括在內(nèi))maxResolution:6,//該層可見的最大分辨率(包括在內(nèi))repload:0,//預(yù)加載。將低分辨率瓦片加載到預(yù)加載級(jí)別。0表示沒有預(yù)加載 默認(rèn)為0source:newol.source.TileSource()/ImageSource(),//圖層源map:? ,//把圖層覆蓋在地圖上,地圖不會(huì)在它的圖層集合中管理這個(gè)圖層,這個(gè)圖層將被呈現(xiàn)在頂部,這對(duì)于臨時(shí)層非常有用。})

(1)ol.layer.Tile()

平鋪圖層。

對(duì)于提供預(yù)呈現(xiàn)、平鋪的網(wǎng)格圖像的層源,這些網(wǎng)格按特定分辨率的縮放級(jí)別組織。

(2)ol.layer.Image()

圖像圖層。

服務(wù)器呈現(xiàn)的映像,可用于任意范圍和分辨率。

(3)ol.layer.Vector()

矢量圖層。

在客戶端呈現(xiàn)矢量數(shù)據(jù),其屬性具備getter和setter

newol.layer.Vector({//以下為圖層的屬性選項(xiàng), 都可設(shè)置,所以皆有g(shù)etter/setteropacity:2,//透明度 區(qū)間范圍為(0, 1) 默認(rèn)為1visible:true,//顯示屬性 布爾值 默認(rèn)為trueextent:[],//圖層渲染的邊界范圍。該層將不會(huì)在此范圍之外呈現(xiàn)zIndex:2,//圖層渲染的索引層級(jí)。在渲染時(shí),圖層將被排序,首先是z-idnex,然后是位置,當(dāng)為undefined時(shí),對(duì)于添加到映射的layers集合中的層,zIndex為0,或者當(dāng)使用該層的setMap()方法時(shí),zIndex為無窮大minResolution:3,//該層可見的最小分辨率(包括在內(nèi))maxResolution:6,//該層可見的最大分辨率(包括在內(nèi))renderOrder:,//呈現(xiàn)順序。函數(shù)用于在呈現(xiàn)前對(duì)特性進(jìn)行排序。默認(rèn)情況下,特性是按照創(chuàng)建它們的順序繪制的。使用null來避免排序,但是得到一個(gè)未定義的繪制順序renderBuffer:100,//默認(rèn)為100 緩沖區(qū)renderMode:'vector',//默認(rèn)為'vector' 矢量圖層的渲染模式source:newol.source.VectorSource(),//圖層源map:? ,//把圖層覆蓋在地圖上,地圖不會(huì)在它的圖層集合中管理這個(gè)圖層,這個(gè)圖層將被呈現(xiàn)在頂部,這對(duì)于臨時(shí)層非常有用declutter:false,//默認(rèn)為false 整理圖片和文字。清理應(yīng)用于所有圖像和文本樣式,優(yōu)先級(jí)由樣式的z-index定義。z-index指數(shù)越低,優(yōu)先級(jí)越高style:newol.style.Style(),//圖層樣式updateWhileAnimating:false,//默認(rèn)為false updateWhileInteracting:false,//默認(rèn)為false})

其中渲染模式有兩種:

'image':矢量圖層被渲染為圖像。性能很好,但是點(diǎn)符號(hào)和文本總是隨著視圖旋轉(zhuǎn),像素在縮放動(dòng)畫中縮放

'vector':矢量圖層被呈現(xiàn)為向量。即使在動(dòng)畫期間也有最準(zhǔn)確的渲染,但性能較慢

1)Feature

用于地理特征的矢量元素,具有幾何geometry()和其他屬性,類似于矢量文件格式(如GeoJSON)中的特性。

添加矢量元素:通過vectorsource().addFeature(feature)添加到矢量圖層上。

移除圖層所有的矢量元素:vectorsource().clear()

letfeature =newol.Feature({geometry:newol.geom.Polygon(polyCoords),labelPoint:newol.geom.Point(labelCoords),style:newol.style.Style({}),name:'My Polygon'});

定義矢量元素:new ol.Feature(),;

矢量元素樣式:

設(shè)置樣式:new ol.style.Style(),也可以使用feature.setStyle(style),未定義的話,可以使用它的盛放容器layer的樣式;

獲取樣式:feature.getStyle()

一個(gè)feature只有一個(gè)默認(rèn)幾何屬性geometry,可以有任意數(shù)量的命名幾何圖形:

獲取默認(rèn)幾何屬性:feature.getGeometry();

設(shè)置幾何屬性:feature.setGeometry(geometry);

設(shè)置幾何屬性名:feature.setGeometryName(name);

矢量元素要呈現(xiàn)的幾何圖形的特征屬性、幾何圖形或函數(shù)由geometry屬性選項(xiàng)設(shè)定,主要有以下幾種子類模塊:

ol.geom.Circle():圓形

ol.geom.Geometry():幾何圖形

ol.geom.GeometryCollection():

ol.geom.LinearRing():環(huán)線

ol.geom.LineString():線段

ol.geom.Point():點(diǎn)

ol.geom.Polygon():多邊形

ol.geom.MultiLineString()

ol.geom.MultiPoint()

ol.geom.MultiPolygon()

ol.geom.SimpleGeometry()

feature的穩(wěn)定標(biāo)識(shí)符ID:

設(shè)置feature的id:feature.setId(id),當(dāng)id可能相同時(shí),可以這樣加以區(qū)分

feature.setId(id +?"featureName");

獲取feature的id:vector.getSource().getFeatureById()或者vectorsource().getFeatureById()

feature的set(key, value, opt_silent):

設(shè)置key:feature.set("keyName",name),keyName是字符串,自己根據(jù)情況設(shè)置

獲取key:之前設(shè)置的什么,就獲取什么,feature.get("keyName"),會(huì)得到設(shè)置的值

2)Style

矢量特征呈現(xiàn)樣式的容器。在重新呈現(xiàn)使用樣式的特性或圖層之前,通過set*()方法對(duì)樣式及其子元素所做的任何更改都不會(huì)生效。

newol.style.Style({geometry:newol.geom.LineString(),//有以上ol.geom模塊的幾何圖形可以參考fill:newol.style.Fill({//填充樣式color:color//顏色、漸變或圖案}),image:newol.style.Image({//圖像opacity:,//數(shù)值rotateWithView:,//布爾值rotation:,//數(shù)值scale://數(shù)值}),image:newol.style.Icon({//可以使用圖片資源anchor:[0.5,0.5],//錨。默認(rèn)值是圖標(biāo)中心 默認(rèn)值是[0.5,0.5]anchorOrigin:'top-left',//錨的原點(diǎn):左下角、右下角、左上方或右上方。默認(rèn)是左上anchorXUnits:'fraction',//指定錨點(diǎn)x值的單位。'fraction'的值表示x值是圖標(biāo)的'fraction'。'pixels'的值表示像素中的x值,默認(rèn)為'fraction'anchorYUnits:'fraction',//指定錨點(diǎn)y值的單位。'fraction'的值表示y值是圖標(biāo)的'fraction'。'pixels'的值表示像素中的y值,默認(rèn)為'fraction'color:color,//顏色、漸變或圖案crossOrigin:,img:,//圖標(biāo)的圖像對(duì)象? 如果沒有提供src選項(xiàng),則必須已經(jīng)加載了提供的圖像imgSize:,//offset:[0,0].//偏移值,默認(rèn)為[0,0]offsetOrigin:'top-left',//偏移量的原點(diǎn),bottom-left, bottom-right, top-left or top-right. 默認(rèn)是`top-left`opacity:1,//默認(rèn)是1? (0,1)scale:1,//默認(rèn)是1rotation:0,//以弧度旋轉(zhuǎn)(順時(shí)針方向正旋轉(zhuǎn)) 默認(rèn)為0size:,//圖標(biāo)大小(以像素為單位)??膳c偏移量一起用于定義要從原點(diǎn)(sprite)圖標(biāo)圖像使用的子矩形src:'',//圖像URL源rotateWithView:false,//是否旋轉(zhuǎn)視圖中的圖標(biāo)? 默認(rèn)為false? ? ? ? ? ? }),stroke:newol.style.Stroke({//描繪width: ,//寬color:color,//顏色、漸變或圖案lineCap:'round',//線帽風(fēng)格? butt, round, 或者 square 默認(rèn) roundlineJoin:'round',//線連接方式 bevel, round, 或者 miter 默認(rèn) roundlineDash: [],//線間隔模式 這個(gè)變化與分辨率有關(guān) 默認(rèn)為undefined Internet Explorer 10和更低版本不支持lineDashOffset:0,//線段間隔偏移 默認(rèn)0miterLimit:10,// 默認(rèn)10? ? ? ? ? ? ? ? ? }),text:newol.style.Text({//文字font:'',//默認(rèn)是'10px sans-serif'text:'',//文本內(nèi)容textAlign:'center',//文本對(duì)齊 'left', 'right', 'center', 'end' 'start'.針對(duì)于placement: 'point',默認(rèn)為'center';針對(duì)于placement: 'line',默認(rèn)是讓渲染器選擇不超過maxAngle的位置textBaseline:'middle',//文本基線? 'bottom', 'top', 'middle', 'alphabetic', 'hanging', 'ideographic' 默認(rèn)'middle'placement:'',//文本布置scale:,padding:[0,0,0,0],//文本周圍的像素填充。數(shù)組中值的順序是[top, right, bottom, left]fill:newol.style.Fill(),//如果未設(shè)置,默認(rèn)未#333stroke:newol.style.Stroke(),offsetX:0,//水平文本偏移量(以像素為單位)。正值將把文本右移。默認(rèn)0offsetY:0,//垂直文本偏移量(以像素為單位)。正值會(huì)將文本向下移動(dòng)。默認(rèn)0rotation:0,//默認(rèn)0rotateWithView:false,backgroundFill:? ,//當(dāng)placement:“point”時(shí),填充文本背景的樣式。默認(rèn)為無填充 backgroundStroke: ,//當(dāng)placement:“point”時(shí),描繪文本背景的樣式。默認(rèn)為無描繪}),zIndex:,})

ol.geom.Geomtry()是矢量幾何對(duì)象的抽象基類,通常只用于創(chuàng)建子類,而不是在應(yīng)用程序中實(shí)例化。它的方法如下:

方法功能

set(key, value)設(shè)置值。key:關(guān)鍵名字(字符串);value:值

get(key)獲取值

setProperties(values, opt_silent)設(shè)置鍵值對(duì)的集合。注意,這將更改任何現(xiàn)有屬性并添加新屬性(它不會(huì)刪除任何現(xiàn)有屬性)。

getProperties()獲取一個(gè)包含所有屬性名和值的對(duì)象

getClosestPoint(point, opt_closestPoint)將幾何圖形的最近點(diǎn)作為坐標(biāo)返回到經(jīng)過的點(diǎn)

getExtent(opt_extent)獲取幾何的范圍

getKeys()獲取對(duì)象屬性名稱列表

getRevision()獲取此對(duì)象的版本號(hào)。每次修改對(duì)象時(shí),它的版本號(hào)都會(huì)增加。

intersectsCoordinate(coordinate)如果該幾何圖形包含指定的坐標(biāo),則返回true。如果坐標(biāo)位于幾何圖形的邊界上,則返回false

rotate(angle, anchor)圍繞給定的坐標(biāo)旋轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)

scale(sx, opt_sy, opt_anchor)縮放幾何圖形(可選原點(diǎn))。這將修改現(xiàn)有的幾何坐標(biāo)。sx:x方向上的縮放因子;sy:Y軸上的縮放因子;opt_anchor`:縮放原點(diǎn)(默認(rèn)為幾何范圍的中心)

simplify(tolerance)創(chuàng)建這個(gè)幾何圖形的簡(jiǎn)化版本

transform(source, destination)將圓的每個(gè)坐標(biāo)從一個(gè)坐標(biāo)系變換到另一個(gè)坐標(biāo)系。在適當(dāng)?shù)奈恢眯薷膸缀螆D形。如果不想修改幾何圖形,請(qǐng)首先clone()它,然后在克隆上使用此函數(shù)。在內(nèi)部,一個(gè)圓目前由兩點(diǎn)表示:圓心[cx, cy]和圓心右邊的點(diǎn)[cx + r, cy]。這個(gè)transform函數(shù)只變換這兩點(diǎn)。所以得到的幾何形狀也是一個(gè)圓,而這個(gè)圓并不等同于通過變換原圓的每一點(diǎn)得到的形狀

translate(deltaX, deltaY)翻轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)。如果您想要一個(gè)新的幾何體,那么首先clone()這個(gè)幾何體

以下是ol.geom.Geomtry抽象基類創(chuàng)建的常見子類模塊

1)ol.geom.Circle()

newol.geom.Circle({center:[],//中心點(diǎn)radius:2,//圓半徑layout://布局})

方法功能

applyTransform(transformFn)對(duì)幾何圖形的每個(gè)坐標(biāo)應(yīng)用一個(gè)變換函數(shù)。在適當(dāng)?shù)奈恢眯薷膸缀螆D形。如果不想修改幾何圖形,請(qǐng)首先clone()它,然后在克隆上使用此函數(shù)

clone()把幾何圖形復(fù)制一份

getCenter()返回中心坐標(biāo)

getFirstCoordinate()返回幾何圖形的第一個(gè)坐標(biāo)

getLastCoordinate()返回幾何圖形的最后一個(gè)坐標(biāo)

getLayout()返回幾何圖形的layout

getRadius()返回圓的半徑

getType()獲取這個(gè)幾何圖形的類型

intersectsExtent(extent)測(cè)試幾何形狀和經(jīng)過的區(qū)域是否相交,返回布爾值

rotate(angle, anchor)圍繞給定的坐標(biāo)旋轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)。angle:以弧度為單位的旋轉(zhuǎn)角度;anchor:旋轉(zhuǎn)中心

scale(sx, opt_sy, opt_anchor)縮放幾何圖形(可選原點(diǎn))。這將修改現(xiàn)有的幾何坐標(biāo)。sx:x方向上的縮放因子;sy:Y軸上的縮放因子;opt_anchor:縮放原點(diǎn)(默認(rèn)為幾何范圍的中心)

setCenter(center)將圓心設(shè)置為coordinate

setCenterAndRadius(center, radius, opt_layout)設(shè)置圓的中心(coordinate)和半徑(number)

setRadius(radius)設(shè)置圓的半徑。半徑的單位是投影的單位。

transform(source, destination)將圓的每個(gè)坐標(biāo)從一個(gè)坐標(biāo)系變換到另一個(gè)坐標(biāo)系。在適當(dāng)?shù)奈恢眯薷膸缀螆D形。如果不想修改幾何圖形,請(qǐng)首先clone()它,然后在克隆上使用此函數(shù)。在內(nèi)部,一個(gè)圓目前由兩點(diǎn)表示:圓心[cx, cy]和圓心右邊的點(diǎn)[cx + r, cy]。這個(gè)transform函數(shù)只變換這兩點(diǎn)。所以得到的幾何形狀也是一個(gè),而這個(gè)圓并不等同于通過變換原圓的每一點(diǎn)得到的形狀

translate(deltaX, deltaY)f翻轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)。如果您想要一個(gè)新的幾何體,那么首先clone()這個(gè)幾何體

2)ol.geom.LineString(coordinates, opt_layout)

newol.geom.LineString({coordinate:[],//坐標(biāo)。對(duì)于內(nèi)部使用,平面坐標(biāo)結(jié)合opt_layout也可以接受layout://Layout})

方法功能

appendCoordinate(coordinate)將經(jīng)過的坐標(biāo)追加到linestring的坐標(biāo)里

applyTransform(transformFn)對(duì)幾何圖形的每個(gè)坐標(biāo)應(yīng)用一個(gè)變換函數(shù)。在適當(dāng)?shù)奈恢眯薷膸缀螆D形。如果不想修改幾何圖形,請(qǐng)首先clone()它,然后在克隆上使用此函數(shù)

clone()把幾何圖形復(fù)制一份

forEachSegment(callback)遍歷每條線段,調(diào)用提供的回調(diào)函數(shù)。如果回調(diào)函數(shù)返回一個(gè)真值,則函數(shù)立即返回該值。否則函數(shù)返回false

getCoordinateAt(fraction, opt_dest)沿著線段返回給定部分的坐標(biāo)。fraction是一個(gè)介于0和1之間的數(shù)字,其中0是線段的開始,1是線段的末尾

getCoordinates()返回線段的坐標(biāo)

setCoordinates(coordinates, opt_layout)s設(shè)置線段的坐標(biāo)

getFirstCoordinate()返回幾何圖形的第一個(gè)坐標(biāo)

getLastCoordinate()返回幾何圖形的最后一個(gè)坐標(biāo)

getLayout()返回幾何圖形的Layout

getLength()在投影平面上返回線段的長(zhǎng)度

getType()得到這個(gè)幾何圖形的類型

intersectsExtent(extent)測(cè)試幾何形狀和通過的范圍是否相交

rotate(angle, anchor)圍繞給定的坐標(biāo)旋轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)

scale(sx, opt_sy, opt_anchor)縮放幾何圖形(可選原點(diǎn))。這將修改現(xiàn)有的幾何坐標(biāo)。sx:x方向上的縮放因子;sy:Y軸上的縮放因子;opt_anchor`:縮放原點(diǎn)(默認(rèn)為幾何范圍的中心)

translate(deltaX, deltaY)翻轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)。如果您想要一個(gè)新的幾何體,那么首先clone()這個(gè)幾何體

3)ol.geom.Point(coordinates, opt_layout)

new?ol.geom.Point()

方法功能

applyTransform(transformFn)對(duì)幾何圖形的每個(gè)坐標(biāo)應(yīng)用一個(gè)變換函數(shù)。在適當(dāng)?shù)奈恢眯薷膸缀螆D形。如果不想修改幾何圖形,請(qǐng)首先clone()它,然后在克隆上使用此函數(shù)

clone()把幾何圖形復(fù)制一份

getCoordinates()返回點(diǎn)的坐標(biāo)

setCoordinates(coordinates, opt_layout)設(shè)置點(diǎn)的坐標(biāo)

getFirstCoordinate()返回幾何圖形的第一個(gè)坐標(biāo)

getLastCoordinate()返回幾何圖形的最后一個(gè)坐標(biāo)

getLayout()返回幾何圖形的Layout

getType()得到這個(gè)幾何圖形的類型

intersectsExtent(extent)測(cè)試幾何形狀和通過的范圍是否相交

rotate(angle, anchor)圍繞給定的坐標(biāo)旋轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)

scale(sx, opt_sy, opt_anchor)縮放幾何圖形(可選原點(diǎn))。這將修改現(xiàn)有的幾何坐標(biāo)。sx:x方向上的縮放因子;sy:Y軸上的縮放因子;opt_anchor`:縮放原點(diǎn)(默認(rèn)為幾何范圍的中心)

translate(deltaX, deltaY)翻轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)。如果您想要一個(gè)新的幾何體,那么首先clone()這個(gè)幾何體

(4)ol.geom.Polygon()

多邊形幾何圖形。

newol.geom.Polygon({coordinates:[],//定義多邊形的線性環(huán)的數(shù)組layout:,ends:[],//末端(平面坐標(biāo)內(nèi)部使用)})

方法功能

applyTransform(transformFn)對(duì)幾何圖形的每個(gè)坐標(biāo)應(yīng)用一個(gè)變換函數(shù)。在適當(dāng)?shù)奈恢眯薷膸缀螆D形。如果不想修改幾何圖形,請(qǐng)首先clone()它,然后在克隆上使用此函數(shù)

appendLinearRing(linearRing)在多邊形上追加線性環(huán)

clone()把幾何圖形復(fù)制一份

getCoordinates()返回點(diǎn)的坐標(biāo)

setCoordinates(coordinates, opt_layout)設(shè)置點(diǎn)的坐標(biāo)

getFirstCoordinate()返回幾何圖形的第一個(gè)坐標(biāo)

getLastCoordinate()返回幾何圖形的最后一個(gè)坐標(biāo)

getInteriorPoint()返回多邊形的內(nèi)部點(diǎn)

getLinearRing(index)返回多邊形幾何的第n個(gè)線性環(huán)。如果給定索引超出范圍,則返回null。外部線性環(huán)在索引0處可用,而內(nèi)部環(huán)在索引1及以上處可用

getLinearRings()返回多邊形的線性環(huán)

getLinearRingCount()返回多邊形的環(huán)數(shù),這包括外部環(huán)和任何內(nèi)部環(huán)

getLayout()返回幾何圖形的Layout

getType()得到這個(gè)幾何圖形的類型

getArea()返回投影平面上多邊形的面積

intersectsExtent(extent)測(cè)試幾何形狀和通過的范圍是否相交

rotate(angle, anchor)圍繞給定的坐標(biāo)旋轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)

scale(sx, opt_sy, opt_anchor)縮放幾何圖形(可選原點(diǎn))。這將修改現(xiàn)有的幾何坐標(biāo)。sx:x方向上的縮放因子;sy:Y軸上的縮放因子;opt_anchor`:縮放原點(diǎn)(默認(rèn)為幾何范圍的中心)

translate(deltaX, deltaY)翻轉(zhuǎn)幾何圖形。這將修改現(xiàn)有的幾何坐標(biāo)。如果您想要一個(gè)新的幾何體,那么首先clone()這個(gè)幾何體

(4)ol.layer.VectorTile()

矢量平鋪圖層。

圖層用于客戶端呈現(xiàn)矢量平鋪數(shù)據(jù)。

newol.layer.Vector({//以下為圖層的屬性選項(xiàng), 都可設(shè)置,所以皆有g(shù)etter/setteropacity:2,//透明度 區(qū)間范圍為(0, 1) 默認(rèn)為1visible:true,//顯示屬性 布爾值 默認(rèn)為trueextent:[],//圖層渲染的邊界范圍。該層將不會(huì)在此范圍之外呈現(xiàn)zIndex:2,//圖層渲染的索引層級(jí)。在渲染時(shí),圖層將被排序,首先是z-idnex,然后是位置,當(dāng)為undefined時(shí),對(duì)于添加到映射的layers集合中的層,zIndex為0,或者當(dāng)使用該層的setMap()方法時(shí),zIndex為無窮大minResolution:3,//該層可見的最小分辨率(包括在內(nèi))maxResolution:6,//該層可見的最大分辨率(包括在內(nèi))renderOrder:,//呈現(xiàn)順序。函數(shù)用于在呈現(xiàn)前對(duì)特性進(jìn)行排序。默認(rèn)情況下,特性是按照創(chuàng)建它們的順序繪制的。使用null來避免排序,但是得到一個(gè)未定義的繪制順序renderBuffer:100,//默認(rèn)為100 緩沖區(qū)renderMode:'vector',//默認(rèn)為'vector' 矢量圖層的渲染模式source:newol.source.VectorSource(),//圖層源map:? ,//把圖層覆蓋在地圖上,地圖不會(huì)在它的圖層集合中管理這個(gè)圖層,這個(gè)圖層將被呈現(xiàn)在頂部,這對(duì)于臨時(shí)層非常有用declutter:false,//默認(rèn)為false 整理圖片和文字。清理應(yīng)用于所有圖像和文本樣式,優(yōu)先級(jí)由樣式的z-index定義。z-index指數(shù)越低,優(yōu)先級(jí)越高style:newol.style.Style(),//圖層樣式updateWhileAnimating:false,//默認(rèn)為false updateWhileInteracting:false,//默認(rèn)為falsepreload:,//renderOrder:,//useInterimTilesOnError:true,//錯(cuò)誤時(shí)使用臨時(shí)貼片 默認(rèn)true})

3、視圖view

設(shè)置視圖view由三種狀態(tài)決定:center中心、resolution分辨率、rotation旋轉(zhuǎn),每個(gè)狀態(tài)都有相應(yīng)的getter和setter。

可以在視圖里定義地圖中心點(diǎn)、層級(jí)、分辨率、旋轉(zhuǎn)以及地圖投影等。

視圖對(duì)象受到約束,主要有分辨率約束、旋轉(zhuǎn)約束、中心約束。

分辨率約束切換到特定分辨率時(shí),特定分辨率主要由以下選項(xiàng)決定:resolutions、maxResolution、maxZoom、zoomFactor。如果已經(jīng)設(shè)置resolutions,其他選項(xiàng)就可忽略。

旋轉(zhuǎn)約束會(huì)切換到特定的角度。它由以下選項(xiàng)決定:enableRotation和constrainRotation。在默認(rèn)情況下,當(dāng)接近水平線時(shí),旋轉(zhuǎn)值會(huì)突然變?yōu)榱恪?/p>

中心約束由范圍選項(xiàng)決定。默認(rèn)情況下,中心完全不受約束。

(1)視圖選項(xiàng)

1)中心點(diǎn)center

視圖的初始中心,中心的坐標(biāo)系由投影projection指定,如果未設(shè)置此參數(shù),則不會(huì)獲取層源,但是之后可以使用#setCenter設(shè)置中心。

letcenter = ol.proj.fromLonLat([longitude, latitude]);//未限制地圖范圍時(shí)letcenter = ol.proj.transform([minX, minY, maxX, maxY],'EPSG:4326','EPSG:3857');//限制地圖顯示范圍時(shí)設(shè)置中心點(diǎn)? X代表經(jīng)度, Y代表緯度

ol.proj.transform([], "EPSG:", "EPSG:")是經(jīng)緯度投影轉(zhuǎn)換

獲取中心:map.getView().getCenter()

設(shè)置中心:map.getView().setCenter(center)

2)投影projection

視圖擁有projection投影,投影決定了中心的坐標(biāo)系,其單位決定了分辨率的單位(每個(gè)像素的投影單位)。默認(rèn)投影為球面墨卡托(EPSG:3857)。

獲取投影:map.getView().getProjection()

設(shè)置投影:map.getView().setProjection()

3)分辨率resolution

視圖的初始分辨率,單位是每像素的投影單位(例如米每像素)。

另一種方法是設(shè)置縮放zoom??s放可以設(shè)置:最大層級(jí)maxZoom、最小層級(jí)minZoom以及當(dāng)前層級(jí)zoom

letview =newol.View({// center: center,zoom: curZoom,minZoom: minZoom,maxZoom: maxZoom,});

獲取分辨率:map.getView().getResolution()

獲取給定范圍(以映射單元為單位)和大小(以像素為單位)的分辨率:map.getView().getResolutionForExtent(extent, opt_size);

獲取縮放級(jí)別的分辨率:map.getView().getResolutionForZoom(zoom);

獲取視圖最大值分辨率:map.getView().getMaxResolution();

獲取視圖最小值分辨率:map.getView().getMinResolution();

設(shè)置分辨率:map.getView().setResolution(resolution)

4)旋轉(zhuǎn)rotation

初始旋轉(zhuǎn)角度為弧度(正順時(shí)針旋轉(zhuǎn),0表示向北)。

獲取旋轉(zhuǎn)調(diào)用方法map.getView().getRotation();

設(shè)置旋轉(zhuǎn)調(diào)用方法map.getView().setRotation(rotation);

5)縮放zoom

僅在未定義分辨率時(shí)使用。

縮放級(jí)別用于計(jì)算視圖的初始分辨率。初始分辨率是使用#constrainResolution方法確定的。

獲取縮放層級(jí):map.getView().getZoom();

獲取最大縮放層級(jí):map.getView().getMaxZoom();

獲取最小縮放層級(jí):map.getView().getMinZoom();

獲取縮放層級(jí)的分辨率:map.getView().getZoomForResolution(resolution);

設(shè)置縮放層級(jí):map.getView().setZoom(zoom);

設(shè)置最大縮放層級(jí):map.getView().setMaxZoom(zoom);

設(shè)置最小縮放層級(jí):map.getView().setMinZoom(zoom);

6)旋轉(zhuǎn)約束constrainRotation

旋轉(zhuǎn)約束。false為未約束,true為未約束但是接近于0。數(shù)字限制了旋轉(zhuǎn)到該值的數(shù)量。

7)啟用旋轉(zhuǎn)enableRotation

如果為false,則始終使用將旋轉(zhuǎn)設(shè)置為零的旋轉(zhuǎn)約束。如果啟用為false,則沒有效果。

8)約束范圍extent

中心點(diǎn)不能超出這個(gè)范圍。

(2)視圖方法

1)動(dòng)畫animate(var_args)

單個(gè)動(dòng)畫

動(dòng)畫視圖。視圖的中心、縮放(或分辨率)和旋轉(zhuǎn)可以通過動(dòng)畫來實(shí)現(xiàn)視圖狀態(tài)之間的平滑轉(zhuǎn)換。

默認(rèn)情況下,動(dòng)畫持續(xù)時(shí)間為1秒,并且類型為in-and-out easing。

通過設(shè)置持續(xù)時(shí)間duration(以毫秒為單位)和緩動(dòng)選項(xiàng)easing(參見模塊:ol/easing)來定制此行為。

easing:

easeIn:平緩加速

easeOut:平緩減速

inAndOut:平緩開始,先加速,再減速

linear:勻速

upAndDown:平緩開始,加速,最后再減速。這與模塊的一般行為相同:ol/easing~inAndOut,但是最終的減速被延遲了

多個(gè)動(dòng)畫

要將多個(gè)動(dòng)畫連接在一起,請(qǐng)使用多個(gè)動(dòng)畫對(duì)象調(diào)用該方法。

如果提供一個(gè)函數(shù)作為animate方法的最后一個(gè)參數(shù),它將在動(dòng)畫系列的末尾被調(diào)用。

如果動(dòng)畫系列獨(dú)立完成,回調(diào)函數(shù)將被調(diào)用true;如果動(dòng)畫系列被取消,回調(diào)函數(shù)將被調(diào)用false。

取消動(dòng)畫

動(dòng)畫通過用戶交互(例如拖動(dòng)地圖)或調(diào)用view.setCenter()、view.setResolution()或view.setRotation()(或調(diào)用其中一個(gè)方法的另一個(gè)方法)來取消。

2)取消動(dòng)畫cancelAnimations()

取消任何正在進(jìn)行的動(dòng)畫。

(3)getAnimating()

確定視圖是否處于動(dòng)畫狀態(tài)。返回布爾值。

4)計(jì)算范圍calculateExtent(opt_size)

計(jì)算當(dāng)前視圖狀態(tài)的范圍和傳遞的大小。opt_size指盒子像素尺寸,如未提供,將使用此視圖的第一個(gè)映射的大小。

尺寸是盒子的像素尺寸,計(jì)算的范圍應(yīng)該與之匹配。

想要獲取整個(gè)底圖映射的范圍,使用map.getSize()

5)centerOn(coordinate, size, position)

以坐標(biāo)和視圖位置為中心。

coordinate:坐標(biāo)點(diǎn)

size:盒子像素尺寸

position:視圖的居中位置

4、交互動(dòng)作interaction

通常只用于創(chuàng)建子類,而不在應(yīng)用程序中實(shí)例化。

用于更改映射狀態(tài)的用戶操作。有些類似于控件,但不與DOM元素關(guān)聯(lián)。

雖然交互沒有DOM元素,但是它們中的一些會(huì)呈現(xiàn)向量,因此在屏幕上是可見的。

添加交互動(dòng)作使用:map.addInteraction(interaction);

參考于此

OpenLayers?中可實(shí)例化的子類及其功能如下:

可實(shí)例化子類功能

doubleclickzoom interaction雙擊放大交互功能

draganddrop以“拖文件到地圖中”的交互添加圖層

dragbox拉框,用于劃定一個(gè)矩形范圍,常用于放大地圖

dragpan拖拽平移地圖

dragrotateandzoom拖拽方式進(jìn)行縮放和旋轉(zhuǎn)地圖

dragrotate拖拽方式旋轉(zhuǎn)地圖

dragzoom拖拽方式縮放地圖

draw繪制地理要素功能

interaction defaults默認(rèn)添加的交互功能

keyboardpan鍵盤方式平移地圖

keyboardzoom鍵盤方式縮放地圖

select選擇要素功能

modify更改要素

mousewheelzoom鼠標(biāo)滾輪縮放功能

pinchrotate手指旋轉(zhuǎn)地圖,針對(duì)觸摸屏

pinchzoom手指進(jìn)行縮放,針對(duì)觸摸屏

pointer鼠標(biāo)的用戶自定義事件基類

snap鼠標(biāo)捕捉,當(dāng)鼠標(biāo)距離某個(gè)要素一定距離之內(nèi),自動(dòng)吸附到要素

(1)默認(rèn)交互功能ol.interaction.defaylts()

主要是最為常用的功能,如縮放、平移和旋轉(zhuǎn)地圖等,具體功能有如下這些:

默認(rèn)交互功能

ol.interaction.DragRotate鼠標(biāo)拖拽旋轉(zhuǎn),一般配合一個(gè)鍵盤按鍵輔助

ol.interaction.DragZoom鼠標(biāo)拖拽縮放,一般配合一個(gè)鍵盤按鍵輔助

ol.interaction.DoubleClickZoom鼠標(biāo)或手指雙擊縮放地圖

ol.interaction.PinchRotate兩個(gè)手指旋轉(zhuǎn)地圖,針對(duì)觸摸屏

ol.interaction.PinchZoom兩個(gè)手指縮放地圖,針對(duì)觸摸屏

ol.interaction.DragPan鼠標(biāo)或手指拖拽平移地圖

ol.interaction.KeyboardZoom使用鍵盤?+?和?-?按鍵進(jìn)行縮放

ol.interaction.KeyboardPan使用鍵盤方向鍵平移地圖

ol.interaction.MouseWheelZoom鼠標(biāo)滾輪縮放地圖

(2)針對(duì)矢量圖層元素的交互功能

1)選擇ol.interaction.Select()

選擇矢量元素的交互功能。

默認(rèn)情況下,所選矢量元素的樣式不相同,因此這種交互可以用于可視化高亮顯示,以及為其他操作(如修改或輸出)選擇特性。

選定的矢量元素將被添加到內(nèi)部非托管圖層。

有三種方式控制矢量元素的選擇:

使用由condition定義的瀏覽器事件和toggle切換的add/remove以及multi選項(xiàng)

一個(gè)layer過濾器

一個(gè)使用filter選項(xiàng)的進(jìn)一步矢量元素過濾器

2)繪制ol.interaction.Draw()

用于繪制特征幾何圖形的交互功能。

繪制交互允許繪制幾何地理要素,可選一個(gè)參數(shù)為對(duì)象,可包含參數(shù)如下:

features:繪制的要素的目標(biāo)集合;

source:繪制的要素的目標(biāo)圖層源;

snapTolerance:自動(dòng)吸附完成點(diǎn)的像素距離,也就是說當(dāng)鼠標(biāo)位置距離閉合點(diǎn)小于該值設(shè)置的時(shí)候,會(huì)自動(dòng)吸附到閉合點(diǎn),默認(rèn)值是?12;

type:繪制的地理要素類型,ol.geom.GeometryType類型,包含?Point、?LineString、?Polygon、MultiPoint、MultiLineString?或者?MultiPolygon;

minPointsPerRing:繪制一個(gè)多邊形需要的點(diǎn)數(shù)最小值,數(shù)值類型,默認(rèn)是?3;

style:要素素描的樣式;

geometryName:繪制的地理要素的名稱,string類型

3)修改ol.interaction.Modify()

用于修改矢量元素幾何圖形的交互功能。

若想修改已添加到存在的矢量源中的矢量元素,需要使用modify選項(xiàng)構(gòu)建修改交互動(dòng)作。

如若想修改集合中的矢量元素(比如用選擇交互的集合),需要使用features選項(xiàng)構(gòu)建交互。該交互必須使用source或者features構(gòu)建。

默認(rèn)情況下,當(dāng)按下alt鍵時(shí),交互允許刪除頂點(diǎn)。想要使用不同的刪除條件配置交互,請(qǐng)使用deleteCondition選項(xiàng)。

5、控件Control

控件是一個(gè)可見的小部件,其DOM元素位于屏幕上的固定位置。它們可以包含用戶輸入(按鈕),或者只是提供信息;位置是使用CSS確定的。這是一個(gè)虛基類,不負(fù)責(zé)實(shí)例化特定的控件。

默認(rèn)情況下,這些元素被放置在具有CSS類名稱ol-overlaycontainer-stopevent的容器中,但是可以使用任何外部DOM元素。

letmyControl =newol.control.Control({//定義一個(gè)控件element:myElement})//然后添加到地圖上map.addControl(myControl);

主要的屬性選項(xiàng)有:

element:DOM元素,元素是控件的容器元素。只有在開發(fā)自定義控件時(shí)才需要指定這一點(diǎn)

render:重新呈現(xiàn)控件時(shí)調(diào)用的函數(shù)。這在requestAnimationFrame回調(diào)中調(diào)用

target:DOM元素,想要控件在映射的視圖端口之外呈現(xiàn),需要指定目標(biāo)對(duì)象

其中包含的控件有:

控件功能

controldefaults地圖默認(rèn)包含的控件,包含縮放控件和旋轉(zhuǎn)控件

fullscreencontrol全屏控件,用于全屏幕查看地圖

mousepositioncontrol鼠標(biāo)位置控件,顯示鼠標(biāo)所在地圖位置的坐標(biāo),可以自定義投影

overviewmapcontrol地圖全局視圖控件

rotatecontrol地圖旋轉(zhuǎn)控件

scalelinecontrol比例尺控件

zoomcontrol縮放控件

zoomslidercontrol縮放刻度控件

zoomtoextentcontrol縮放到全局控件

6、疊加層Overlay

要顯示在地圖上方并附加到單個(gè)地圖位置的元素。與控件不同的是,它們不在屏幕上的固定位置,而是綁定到地理坐標(biāo)上,因此平移地圖將移動(dòng)?overlay?,而不是控件。

letpopup =newol.Overlay({element:document.getElementById('popup'),? ? ...});popup.setPosition(coordinate);map.addOverlay(popup);

Overlay選項(xiàng)

(1)id

設(shè)置?overlay的?id,字符串類型。

獲取id:map.getOverlayById(id)或者overlay.getId()

(2)element

overlay?元素,DOM元素

獲?。簅verlay.getElement()

設(shè)置:overlay.setElement(element)

(3)offset

偏移量(以像素為單位),用于定位?overlay?,數(shù)組類型,默認(rèn)為[0, 0]:

數(shù)組第一個(gè)元素為水平偏移,正右負(fù)左;

數(shù)組第二個(gè)元素為垂直,正下負(fù)上;

獲取偏移值:overlay.getOffset()

設(shè)置偏移值:overlay.setOffset(offset)

(4)position

地圖投影中的位置。

獲取:overlay.getPosition()

設(shè)置:overlay.setPosition(position),如果位置未定義undefined,則覆蓋被隱藏。

(5)positioning

定義?overlay?相對(duì)于其位置屬性的實(shí)際位置,默認(rèn)為top-left,還有'bottom-left',?'bottom-center',?'bottom-right',?'center-left',?'center-center',?'center-right',?'top-left','top-center', and?'top-right'.

獲取:overlay.getPositioning()

設(shè)置:overlay.setPositioning(positioning)

(6)autoPan

默認(rèn)為false,如果設(shè)置為true,則在調(diào)用setPosition將平移映射,以便在當(dāng)前視圖中?overlay?完全可見。

(7)autoPanAnimation

動(dòng)畫選項(xiàng)用于平移?overlay?到視圖中。此動(dòng)畫僅在啟用autoPan時(shí)使用??梢蕴峁┮粋€(gè)持續(xù)時(shí)間和緩動(dòng)來定制動(dòng)畫。

(8)stopEvent

默認(rèn)為true,是否應(yīng)該停止到map視圖端口的事件傳播。

如果為true,則將?overlay?放置在與控件相同的容器中(CSS class nameol-overlaycontainer-stopevent)

如果為false,它用className屬性指定的CSS類名放置在容器中。

(9)className

CSS class name.

(10)autoPanMargin

地圖自動(dòng)平移時(shí),地圖邊緣與?overlay?的留白(空隙),單位是像素,默認(rèn)是 20像素

7、投影Projections

需要給所有坐標(biāo)和范圍提供視圖投影系(默認(rèn)是EPAG:3857)。

轉(zhuǎn)換投影系,使用ol.proj.transform()和ol.proj.transformExtendt進(jìn)行轉(zhuǎn)換

(1)、ol.proj

1)ol.proj.addCoordinateTransforms(source, destination, forward, inverse)

注冊(cè)坐標(biāo)轉(zhuǎn)換函數(shù)來轉(zhuǎn)換源投影和目標(biāo)投影之間的坐標(biāo)。正、反函數(shù)轉(zhuǎn)換坐標(biāo)對(duì);此函數(shù)將這些轉(zhuǎn)換為內(nèi)部使用的處理區(qū)段和坐標(biāo)數(shù)組的函數(shù)

source:源投影

destination:目標(biāo)投影

forward:接受ol的正向變換函數(shù)(即從源投影到目標(biāo)投影)。作為參數(shù),并返回轉(zhuǎn)換后的ol.Coordinate

inverse:接受ol的逆變換函數(shù)(即從目標(biāo)投影到源投影)。作為參數(shù),并返回轉(zhuǎn)換后的ol.Coordinate

2)ol.proj.addEquivalentProjections(projections)

注冊(cè)不改變坐標(biāo)的轉(zhuǎn)換函數(shù)。它們?cè)试S在具有相同含義的投影之間進(jìn)行轉(zhuǎn)換。

3)ol.proj.addProjection(projection)

將投影對(duì)象添加到受支持的投影列表中,這些投影可以通過它們的SRS碼進(jìn)行查找。

4)ol.proj.equivalent(projection1, projection2)

檢查兩個(gè)投影是否相同,即一個(gè)投影中的每個(gè)坐標(biāo)確實(shí)表示另一個(gè)投影中的相同地理點(diǎn)。

5)ol.proj.fromLonLat(coordinate, opt_projection)

將經(jīng)緯度坐標(biāo)轉(zhuǎn)換為不同的投影

coordinate:經(jīng)緯度數(shù)組,經(jīng)度在前,緯度在后

projection:目標(biāo)投影。默認(rèn)是Web Mercator,即“EPSG: 3857”

6)ol.proj.get(projectionLike)

獲取指定代碼的投影對(duì)象。

7)ol.proj.getTransform(source, destination)

給定類似于投影的對(duì)象,搜索轉(zhuǎn)換函數(shù)將坐標(biāo)數(shù)組從源投影轉(zhuǎn)換為目標(biāo)投影。

8)ol.proj.setProj4(proj4)

proj4注冊(cè)。如果沒有顯式注冊(cè),則假定proj4js將加載在全局名稱空間中

ol.proj.setProj4(proj4);

9)ol.proj.toLonLat(coordinate, opt_projection)

將坐標(biāo)轉(zhuǎn)換為經(jīng)度/緯度

coordinate:投影坐標(biāo)

projection:坐標(biāo)的投影,默認(rèn)是Web Mercator,即“EPSG: 3857”

10)ol.proj.transform(coordinate, source, destination)

將坐標(biāo)從源投影轉(zhuǎn)換為目標(biāo)投影,這將返回一個(gè)新的坐標(biāo)(并且不修改原始坐標(biāo))。

coordinate:坐標(biāo)

source:源投影

destination:目標(biāo)投影

11)ol.proj.transformExtent

將范圍從源投影轉(zhuǎn)換為目標(biāo)投影,這將返回一個(gè)新范圍(并且不修改原始范圍)。

12)ol.proj.Units{string}

投影單位:'degrees',?'ft',?'m',?'pixels',?'tile-pixels'?or?'us-ft'

閱讀 9.1k?更新于 2019-09-05

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容