Openlayers問題及 openlayer詳解

壹膏燃、?常見問題

備注:

如同現(xiàn)openlayer官網(wǎng)的實(shí)例代碼所以用的是VectorLayer的格式刷允,項(xiàng)目是在該頁(yè)面上引用的ol;

項(xiàng)目在全局引用了ol奶躯,所以用的ol.layer.Vector這樣的格式;

部分代碼是在word里改的可能有錯(cuò)誤亿驾,粘貼復(fù)制需要檢查嘹黔。



1、?tilelayer與vectorlayer

tilelayer為瓦片數(shù)據(jù)莫瞬,獲取到的數(shù)據(jù)是以圖片的形式展示的儡蔓,所以無(wú)法獲取包含的屬性值;


??var imgayer?=?new?TileLayer({

????????source:?new?TileWMS({

??????????url:?'http://xx.xxx.xxxx /geoserver/'testosmmap /wms',

??????????params:{

?LAYERS:?'testosmmap:xxxx,

????????????TILED:?true,

????????????VERSION:?'1.1.0'

},

??????????serverType:?'geoserver',

??????????wrapX:?false,

})

})



vectorlayer獲取到的為矢量數(shù)據(jù)疼邀,openlayer默認(rèn)的樣式:點(diǎn)為中間白色邊框?yàn)樗{(lán)色的圓圈喂江,線為藍(lán)色,面為中間白色邊框藍(lán)色旁振;在添加矢量數(shù)據(jù)的時(shí)候可以根據(jù)自己想要的樣子修改vectorlayer里的style获询,改變其樣式。


var?style?=?new?ol.style.Style({

????????fill:?new?ol.style.Fill({

??????????color:?'RGBA(27,84,146,0.3)'

}),

????????stroke:?new?ol.style.Stroke({

??????????width:?4,

??????????color:?'RGBA(27,84,146,1)'

}),

????????image:?new?ol.style.Icon({

??????????anchor:?[0.5,?30],

??????????anchorXUnits:?'fraction',

??????????anchorYUnits:?'pixels',

??????????opacity:?0.95,

??????????src:?that.point_icon //圖片src

}),


????????text:?new?ol.style.Text({

??????????font:?'bold?15px?"Open?Sans",?"Arial?Unicode?MS",?"sans-serif"',

??????????placement:?'point',

??????????fill:?new?ol.style.Fill({

????????????color:?'black'

}),

??????????offsetY:?5,

})

})

??????//點(diǎn)線面要素圖層

??//?這里的arr為要素集

??????Var vectorsource1?=?new?ol.source.Vector({

????????features:?arr

})

??????Var vectorlayer1?=?new?ol.layer.Vector({

????????source:?vectorsource1,


?//要素的name值顯示在要素上

????????style:?function?(feature)?{

??????????style.getText().setText(feature.get('name'))

??????????return?style

}

})



通過geoserver添加vectorlayer矢量數(shù)據(jù):

? ? ? ? Var vectorsource=?new?VectorSource({?

?????????//geoserver下預(yù)覽選擇geojson格式的url?

??????????url:?'http://xx.xxx.xxxx/geoserver/testosmmap/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=testosmmap%3Apeople_point&maxFeatures=50&outputFormat=application%2Fjson',

??????????format:?new?GeoJSON()

})

????????Var?vectorlayer?=?new?VectorLayer({

??????????source:?vectorsource_

??????????style:?new?Style({

????????????image:?new?Icon({

??????????????src:?people

})

})

})




2拐袜、?獲取矢量要素的屬性值getProperties()及幾何信息getGeometry()

?var?features?=?vectorsource.getFeatures()

????????for?(var?m?=?0;?m?<?feature.length;?m++)?{

?var prop = features[m].getProperties()

?var geom = features[m].getGeometry()

}


3吉嚣、?獲取當(dāng)前的zoom比例縮放值

當(dāng)我們要根據(jù)其zoom的值來(lái)改變一些地圖上的東西時(shí),這時(shí)候就要監(jiān)聽zoom的變化阻肿,實(shí)時(shí)獲取當(dāng)前的zoom值:(在moveend瓦戚,縮放結(jié)束時(shí)獲取當(dāng)前地圖的縮放比例)

map.on('moveend',?function?(event)?{

????????var?zoom?=?map.getView().getZoom()

})

4、?獲取當(dāng)前地圖的范圍丛塌,并根據(jù)當(dāng)前范圍設(shè)置中心點(diǎn),定位功能

比如說根據(jù)一個(gè)點(diǎn)擊事件畜疾,定位到該要素赴邻,將該要素設(shè)為中心點(diǎn):(通過getGeomety()獲取該要素的幾何信息,再根據(jù)幾何信息獲取該要素的范圍啡捶,最后設(shè)置地圖的視圖即可)

?var?geometry?=?feature.getGeometry();

var?extent?=?geometry.getExtent();

????map.getView().fit(extent,?map.getSize());


5姥敛、?Drawend事件,繪制點(diǎn)線面結(jié)束事件

繪制結(jié)束后瞎暑,獲取本次繪制的要素feature

draw.on('drawend',?function?(event)?{

????????that.feature?=?event.feature

?//獲取feature的坐標(biāo)點(diǎn)

????????var?coordinate?=?event.feature.getGeometry().getCoordinates()

????????map.removeInteraction(draw)

})?

6彤敛、?添加select選中事件与帆,Selected選中后觸發(fā)事件

?var?select?=?new?ol.interaction.Select()

??????map.addInteraction(select)

??????select.on('select',?function?(evt)?{

?//選中的要素

????????var?feature?=?evt.selected[0]

})



7、?地圖點(diǎn)擊事件墨榄,click玄糟、doubleclick、pointermove袄秩、pointerdrag阵翎、pointerdown


//單擊事件

map.on('click',?function?(evt)?{

?????var?feature1?=?map.forEachFeatureAtPixel(evt.pixel,?function?(feature){

??????????return?feature

})

})


//鼠標(biāo)移動(dòng)事件

map.on("pointermove",?function(e)?{

??varfeature1?=?map.forEachFeatureAtPixel(e.pixel,?function?(feature){

??????????return?feature

})


});


//雙擊事件

map.on("doubleclick",?function(e)?{

??varfeature1?=?map.forEachFeatureAtPixel(e.pixel,?function?(feature){

??????????return?feature

})

});


//鼠標(biāo)拖拽事件

//(拖拽時(shí)改變鼠標(biāo)樣式的操作)

??map.on('pointerdrag',?function?(evt)?{

????????$('#map').removeClass('mapup')

????????$('#map').addClass('mapdown')

})

??????map.on('pointerup',?function()?{

????????$('#map').addClass('mapup')

})


8、?添加超圖服務(wù)器上的data數(shù)據(jù)即矢量數(shù)據(jù)之剧,sql查詢郭卫、幾何查詢添加數(shù)據(jù)

//通過sql查詢

var?geometryParam?=?new?SuperMap.GetFeaturesBySQLParameters({

????????????queryParameter:{

??????????????name:?'abc'

},

?//abc為data的數(shù)據(jù)源名稱;xyz為數(shù)據(jù)集名稱

????????????datasetNames:?['abc:?xyz'],

????????????toIndex:?20000,

????????????maxFeatures:?20000

})

var?url?=?'http://xxx.xxx.xxxx/iserver/services/xxx/rest/data'

??????????var?icon?=?that.icon1

??????????that.adddata(url,?geometryParam,?icon)


//添加的方法

adddata?(url,?geometryParam,?icon)?{

??????let?that?=?this

??????new?ol.supermap.FeatureService(url).getFeaturesBySQL(

????????geometryParam,

????????function?(serviceResult)?{

??????????var?features?=?new?ol.format.GeoJSON().readFeatures(

????????????serviceResult.result.features

)

??????????var?vectorSource?=?new?ol.source.Vector({

????????????features:?features,

????????????wrapX:?false

})

??????????var?style?=?new?ol.style.Style({

????????????image:?new?ol.style.Icon({

??????????????anchor:?[0.5,?30],

??????????????anchorXUnits:?'fraction',

??????????????anchorYUnits:?'pixels',

??????????????opacity:?0.95,

??????????????src:?icon

}),

????????????text:?new?ol.style.Text({

??????????????font:?'bold?15px?"Open?Sans",?"Arial?Unicode?MS",?"sans-serif"',

??????????????placement:?'point',

??????????????fill:?new?ol.style.Fill({

????????????????color:?'black'

}),

??????????????offsetY:?5,

})

})


??????????var?resultLayer?=?new?ol.layer.Vector({

????????????source:?vectorSource,

????????????//?style:?style

????????????style:?function?(feature)?{

??????????????style.getText().setText(feature.get('NAME'));

??????????????return?style

}

})

??????????map.addLayer(resultLayer)


??????????//?}

})

},



//通過幾何查詢

var?geometryParam?=?new?SuperMap.GetFeaturesByGeometryParameters({

//abc為data的數(shù)據(jù)源名稱背稼;xyz為數(shù)據(jù)集名稱

??????datasetNames:?[abc:xyz],

??????geometry:?polygon,

??????spatialQueryMode:?'INTERSECT'

})

var?url?=?'http://xxx.xxx.xxxx/ iserver/services/xxxx /rest/maps/xxxx'

????????new?ol.supermap.FeatureService(url).getFeaturesByGeometry(geometryParam,?function?(serviceResult)?{

??????getdata?=?serviceResult

??????var?vectorSource?=?new?ol.source.Vector({

????????features:?(new?ol.format.GeoJSON()).readFeatures(serviceResult.result.features),

????????wrapX:?false

})

????????????var?resultLayer?=?new?ol.layer.Vector({

????????source:?vectorSource

})

????????????resultLayer.setProperties({

????????'layerType':?'query_result'

})

????????????map.addLayer(resultLayer)

})

}


9贰军、 想到別的再寫


貳、?Openlayer詳解

等下次再寫蟹肘,困了词疼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疆前,隨后出現(xiàn)的幾起案子寒跳,更是在濱河造成了極大的恐慌,老刑警劉巖竹椒,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件童太,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡胸完,警方通過查閱死者的電腦和手機(jī)书释,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赊窥,“玉大人爆惧,你說我怎么就攤上這事∠悄埽” “怎么了扯再?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)址遇。 經(jīng)常有香客問我熄阻,道長(zhǎng),這世上最難降的妖魔是什么倔约? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任秃殉,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钾军。我一直安慰自己鳄袍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布吏恭。 她就那樣靜靜地躺著拗小,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砸泛。 梳的紋絲不亂的頭發(fā)上十籍,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音唇礁,去河邊找鬼勾栗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盏筐,可吹牛的內(nèi)容都是我干的围俘。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼琢融,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼界牡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起漾抬,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宿亡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后纳令,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挽荠,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年平绩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了圈匆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捏雌,死狀恐怖跃赚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情性湿,我是刑警寧澤纬傲,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站肤频,受9級(jí)特大地震影響嘹锁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜着裹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骇扇,春花似錦摔竿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至稍走,卻和暖如春袁翁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背婿脸。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工粱胜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狐树。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓焙压,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抑钟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涯曲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容