最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenLayers實(shí)現(xiàn)圖層切換控件

 更新時(shí)間:2020年09月25日 16:32:02   作者:不睡覺(jué)的怪叔叔  
這篇文章主要為大家詳細(xì)介紹了OpenLayers實(shí)現(xiàn)圖層切換控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

OpenLayers并沒(méi)有封裝圖層切換的控件,所以我們需要自己來(lái)實(shí)現(xiàn)圖層控件。

自定義圖層切換控件的原理很簡(jiǎn)單:顯示某個(gè)圖層時(shí),將其他圖層隱藏。

完整代碼:

layerSwitch.html:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>圖層切換控件</title>
 <link rel="stylesheet" href="../v5.3.0/css/ol.css" />
 <script src="../v5.3.0/build/ol.js"></script>
</head>
<body>
 <div id="controls">
 <input type="checkbox" id="osm" checked />OpenStreetMap
 <input type="checkbox" id="bingmap" />Bing Map
 <input type="checkbox" id="stamen" />Stamen Map
 </div>
 <div id="map"></div>
 
 <script>
 let map = new ol.Map({
  target: 'map', // 關(guān)聯(lián)到對(duì)應(yīng)的div容器
  layers: [
  new ol.layer.Tile({ // OpenStreetMap圖層
   source: new ol.source.OSM() 
  }),
  new ol.layer.Tile({ // Bing Map圖層
   source: new ol.source.BingMaps({
   key: '略', // 可以自行到Bing Map官網(wǎng)申請(qǐng)key
   imagerySet: 'Aerial'
   }),
   visible: false // 先隱藏該圖層
  }),
  new ol.layer.Tile({
   source: new ol.source.Stamen({
   layer: 'watercolor'
   }),
   visible: false // 先隱藏該圖層
  })
  ],
  view: new ol.View({ // 地圖視圖
  projection: 'EPSG:3857',
  center: [0, 0],
  zoom: 0
  })
 });
 
 let controls = document.getElementById('controls'); 
 // 事件委托
 controls.addEventListener('click', (event) => {
  if(event.target.checked){ // 如果選中某一復(fù)選框
  // 通過(guò)DOM元素的id值來(lái)判斷應(yīng)該對(duì)哪個(gè)圖層進(jìn)行顯示
  switch(event.target.id){
   case "osm": 
   map.getLayers().item(0).setVisible(true);
   break;
   case "bingmap":
   map.getLayers().item(1).setVisible(true);
   break;
   case "stamen": 
   map.getLayers().item(2).setVisible(true);
   break;
   default: break;
  }
  }else{  // 如果取消某一復(fù)選框
  // 通過(guò)DOM元素的id值來(lái)判斷應(yīng)該對(duì)哪個(gè)圖層進(jìn)行隱藏
  switch(event.target.id){
   case "osm": 
   map.getLayers().item(0).setVisible(false);
   break;
   case "bingmap":
   map.getLayers().item(1).setVisible(false);
   case "stamen": 
   map.getLayers().item(2).setVisible(false);
   default: break;
  }
  } 
 });
 </script>
</body>
</html>

實(shí)現(xiàn)效果:

代碼整體邏輯是很簡(jiǎn)單的,其中使用了事件委托這一機(jī)制來(lái)綁定事件,事件委托可以減少事件綁定導(dǎo)致的內(nèi)存消耗,所以平時(shí)開(kāi)發(fā)時(shí)推薦多使用事件委托。

另外,map.getLayers()返回一個(gè)ol.Collection類的對(duì)象,該對(duì)象中包含了地圖中的三個(gè)圖層對(duì)象(ol.layer.Tile),可以為item()方法傳入對(duì)應(yīng)索引來(lái)取出對(duì)應(yīng)圖層對(duì)象。

最后,ol.layer.Tile類的setVisible()方法可以設(shè)置圖層的顯示與隱藏。

怎么樣,自己實(shí)現(xiàn)一個(gè)圖層切換控件是不是很簡(jiǎn)單呢?

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS跳出循環(huán)的方法區(qū)別對(duì)比分析(break,continue,return)

    JS跳出循環(huán)的方法區(qū)別對(duì)比分析(break,continue,return)

    面向?qū)ο缶幊陶Z(yǔ)法中我們會(huì)碰到break ,continue, return這三個(gè)常用的關(guān)鍵字,那么關(guān)于這三個(gè)關(guān)鍵字的使用具體的操作是什么呢?接下來(lái)通過(guò)本文給大家講解JS跳出循環(huán)的方法區(qū)別對(duì)比分析(break,continue,return),感興趣的朋友一起看看吧
    2023-02-02
  • 詳解如何利用chatgpt保護(hù)您的js代碼

    詳解如何利用chatgpt保護(hù)您的js代碼

    這篇文章主要為大家介紹了如何利用chatgpt保護(hù)您的js代碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • bootstrap table實(shí)現(xiàn)單擊單元格可編輯功能

    bootstrap table實(shí)現(xiàn)單擊單元格可編輯功能

    這篇文章主要為大家詳細(xì)介紹了bootstrap table實(shí)現(xiàn)單擊單元格可編輯功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 淺談js構(gòu)造函數(shù)的方法與原型prototype

    淺談js構(gòu)造函數(shù)的方法與原型prototype

    下面小編就為大家?guī)?lái)一篇淺談js構(gòu)造函數(shù)的方法與原型prototype。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • javascript 日期工具匯總

    javascript 日期工具匯總

    這篇文章主要為大家詳細(xì)介紹了javaScript日期工具類的匯總,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • JavaScript中var與let的區(qū)別

    JavaScript中var與let的區(qū)別

    這篇文章主要介紹了JavaScript中var與let的區(qū)別,var是JavaScript剛出現(xiàn)時(shí)就存在的變量聲明關(guān)鍵字,而let作為ES6才出現(xiàn)的變量聲明關(guān)鍵字,無(wú)疑兩者之間存在著很大的區(qū)別,下面來(lái)看看兩者之間到底存在什么
    2021-12-12
  • 微信小程序解析富文本過(guò)程詳解

    微信小程序解析富文本過(guò)程詳解

    這篇文章主要介紹了微信小程序解析富文本過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值
    2019-07-07
  • Bootstrap實(shí)現(xiàn)可折疊分組側(cè)邊導(dǎo)航菜單

    Bootstrap實(shí)現(xiàn)可折疊分組側(cè)邊導(dǎo)航菜單

    這篇文章主要介紹了Bootstrap實(shí)現(xiàn)可折疊分組側(cè)邊導(dǎo)航菜單的相關(guān)資料,需要的朋友可以參考下
    2018-03-03
  • js HTML5手機(jī)刮刮樂(lè)代碼

    js HTML5手機(jī)刮刮樂(lè)代碼

    這篇文章為大家詳細(xì)主要介紹了js HTML5手機(jī)刮刮樂(lè)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 談?wù)劵趇frame、FormData、FileReader三種無(wú)刷新上傳文件的方法

    談?wù)劵趇frame、FormData、FileReader三種無(wú)刷新上傳文件的方法

    發(fā)請(qǐng)求有兩種方式,一種是用ajax,另一種是用form提交,默認(rèn)的form提交如果不做處理的話,會(huì)使頁(yè)面重定向。本篇文章通過(guò)實(shí)例給大家介紹基于iframe/FormData/FileReader三種無(wú)刷新上傳文件的方法,感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12

最新評(píng)論

玛多县| 罗源县| 东兰县| 临高县| 江达县| 甘谷县| 晋州市| 鄢陵县| 上饶县| 民权县| 溧阳市| 日喀则市| 大丰市| 沿河| 吉木乃县| 五台县| 车险| 赤城县| 天等县| 长海县| 广东省| 天峻县| 宣武区| 三明市| 五指山市| 博野县| 上饶县| 宾阳县| 仙居县| 六盘水市| 内丘县| 岳池县| 女性| 德州市| 纳雍县| 大安市| 攀枝花市| 兰考县| 聊城市| 松溪县| 宁远县|