pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

    1. <tfoot id='VTVJv'></tfoot>
    2. <i id='VTVJv'><tr id='VTVJv'><dt id='VTVJv'><q id='VTVJv'><span id='VTVJv'><b id='VTVJv'><form id='VTVJv'><ins id='VTVJv'></ins><ul id='VTVJv'></ul><sub id='VTVJv'></sub></form><legend id='VTVJv'></legend><bdo id='VTVJv'><pre id='VTVJv'><center id='VTVJv'></center></pre></bdo></b><th id='VTVJv'></th></span></q></dt></tr></i><div class="0ke2yoq" id='VTVJv'><tfoot id='VTVJv'></tfoot><dl id='VTVJv'><fieldset id='VTVJv'></fieldset></dl></div>

      1. <small id='VTVJv'></small><noframes id='VTVJv'>

          <bdo id='VTVJv'></bdo><ul id='VTVJv'></ul>
        <legend id='VTVJv'><style id='VTVJv'><dir id='VTVJv'><q id='VTVJv'></q></dir></style></legend>

        何時使用 L.TileLayer 與 L.tileLayer

        when to use L.TileLayer vs L.tileLayer(何時使用 L.TileLayer 與 L.tileLayer)
          <bdo id='WT7vJ'></bdo><ul id='WT7vJ'></ul>

          <i id='WT7vJ'><tr id='WT7vJ'><dt id='WT7vJ'><q id='WT7vJ'><span id='WT7vJ'><b id='WT7vJ'><form id='WT7vJ'><ins id='WT7vJ'></ins><ul id='WT7vJ'></ul><sub id='WT7vJ'></sub></form><legend id='WT7vJ'></legend><bdo id='WT7vJ'><pre id='WT7vJ'><center id='WT7vJ'></center></pre></bdo></b><th id='WT7vJ'></th></span></q></dt></tr></i><div class="0awq2g2" id='WT7vJ'><tfoot id='WT7vJ'></tfoot><dl id='WT7vJ'><fieldset id='WT7vJ'></fieldset></dl></div>

            • <tfoot id='WT7vJ'></tfoot>

              • <legend id='WT7vJ'><style id='WT7vJ'><dir id='WT7vJ'><q id='WT7vJ'></q></dir></style></legend>

                  <small id='WT7vJ'></small><noframes id='WT7vJ'>

                    <tbody id='WT7vJ'></tbody>
                  本文介紹了何時使用 L.TileLayer 與 L.tileLayer的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我剛剛使用 Leaflet 為網站構建地圖,并注意到添加 Tile Layer 至少可以使用兩種方法,L.TileLayer()L.tileLayer(),名稱的區別僅在于單個字符的大小寫.

                  但是,雖然這兩種方法返回的對象都可以添加到 L.map() 返回的地圖對象中,但 L.TileLayer() 似乎沒有 addTo() 方法,而 L.tileLayer() 返回的對象.例如.兩者都有

                  var map = L.map('map');var tiles = new L.TileLayer(<tileUrl>, {attribution: <tileAttrib>});map.addLayer(tiles);

                  var map = L.map('map');var tiles = new L.tileLayer(<tileUrl>, {attribution: <tileAttrib>});map.addLayer(tiles);

                  還有

                  var map = L.map('map');L.tileLayer(<tileUrl>, {attribution: <tileAttrib>}).addTo(map);

                  同時

                  var map = L.map('map');L.TileLayer(<tileUrl>, {attribution: <tileAttrib>}).addTo(map);

                  失敗.瀏覽 Leaflet 的文檔,似乎使用正確的方法是 L.tileLayer() 那么問題是 L.TileLayer() 的用途是什么?p>

                  到目前為止,這是我的代碼的完整示例,要嘗試不同的替代方案,只需取消注釋要測試的代碼并確保其他代碼已被注釋

                  解決方案

                  TL;DR:

                  這兩個都是有效且等價的:

                  var foo = L.tileLayer(arguments);var foo = new L.TileLayer(參數);

                  這兩個在語法上是有效的(因為 Javascript 的歷史包袱)但最終會導致錯誤:

                  var foo = new L.tileLayer(arguments);var foo = L.TileLayer(參數);


                  <塊引用>

                  要添加一個 tilelayer,至少可以使用兩種方法,L.TileLayer()L.tileLayer()

                  嗯,它們并不是真正的兩個方法.技術上L.TileLayerObject的實例,L.tileLayerFunction的實例,繼承Object 的原型.并且 L 充當命名空間而不是類實例.

                  你看,Javascript 中的面向對象編程是奇怪.您可以使用 new關鍵字 幾乎包含任何具有原型的對象.而 基于原型的繼承 讓大多數人難以理解精通適當";哎呀.

                  如今,對于 ES2015 標準和花哨的 class 關鍵字,這并不是真正的問題(我會說這是一個問題,但隱藏在語法糖層之下).但在過去,開發人員不得不求助于,比如說,類繼承的創造性解決方案 有時涉及弄亂原型鏈.

                  Leaflet 使用了這些方法的組合 - 作為一種不希望的副作用L.TileLayer 變成了一個 Function 并且可以調用 L.TileLayer() 直接,這很混亂.

                  Leaflet 還使用了工廠函數的概念:返回類實例的函數.引用 傳單教程之一:

                  <塊引用>

                  大多數 Leaflet 類都有相應的工廠函數.工廠函數與類同名,但使用 lowerCamelCase 而不是 UpperCamelCase:

                  function myBoxClass(name, options) {返回新的 MyBoxClass(名稱,選項);}

                  這只是為了方便:它使用戶免于輸入 new 關鍵字回到 害怕 關鍵字的時代>.

                  但這會產生另一個不受歡迎的副作用,因為在 Javascript 中,所有 Function 都有一個原型,這意味著您可以執行類似的操作

                   函數 myFunction() { ... }var wtf = new myFunction();

                  因此,new L.tileLayer() 也是有效的語法(但在運行時失敗).


                  <塊引用>

                  那么L.TileLayer()有什么用呢?

                  再一次,L.TileLayer() 作為函數調用是一個不受歡迎的副作用.但是 L.TileLayer 代表一個類,因此引用它很重要,因為:

                   if (layer instanceof L.TileLayer)

                  I have just been using Leaflet to build a map for a website and noticed that to add a Tile Layer at least two methods can be used, L.TileLayer() and L.tileLayer(), differing in their name only by the case of a single character.

                  However, while the object returned by both of these methods can be added to a map object returned by L.map() the object returned by L.TileLayer() does not seem to have the addTo() method whilst the object returned byL.tileLayer(). E.g. both

                  var map = L.map('map');
                  var tiles = new L.TileLayer(<tileUrl>, {attribution: <tileAttrib>});
                  map.addLayer(tiles);
                  

                  and

                  var map = L.map('map');
                  var tiles = new L.tileLayer(<tileUrl>, {attribution: <tileAttrib>});
                  map.addLayer(tiles);
                  

                  as well as

                  var map = L.map('map');
                  L.tileLayer(<tileUrl>, {attribution: <tileAttrib>}).addTo(map);
                  

                  whilst

                  var map = L.map('map');
                  L.TileLayer(<tileUrl>, {attribution: <tileAttrib>}).addTo(map);
                  

                  fails. Browsing the documentation of Leaflet it seems the proper method to use is L.tileLayer() so the question then is what is the use of L.TileLayer()?

                  Here's a full example of my code so far, to try the different alternatives simply uncomment the one to test and make sure the others are commented

                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                          "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd">
                          
                  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
                     <head>
                        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
                        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
                        
                        <link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.3/dist/leaflet.css"
                              integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ=="
                              crossorigin=""/>
                        <script src="https://unpkg.com/leaflet@1.3.3/dist/leaflet.js"
                              integrity="sha512-tAGcCfR4Sc5ZP5ZoVz0quoZDYX5aCtEm/eu1KhSLj2c9eFrylXZknQYmxUssFaVJKvvc0dJQixhGjG2yXWiV9Q=="
                              crossorigin=""> </script>
                     </head>
                     <body onload="makeMap()">
                        <script type="text/javascript">
                           function makeMap() {
                              var tileUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
                              var tileAttrib = 'Map data &copy <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'; 
                              var map = L.map('map').setView([63,15],9);
                              
                              // using tileLayer and addLayer - this works
                              var tiles = new L.tileLayer(tileUrl, {attribution: tileAttrib});
                              map.addLayer(tiles);
                              
                              // using tileLayer and addTo - this works
                  //             L.tileLayer(tileUrl, {attribution: tileAttrib}).addTo(map);
                              
                              // using TileLayer and addLayer - this works
                  //             var tiles = new L.TileLayer(tileUrl, {attribution: tileAttrib});
                  //             map.addLayer(tiles);
                              
                              // using TileLayer and addTo - this fails
                  //             L.TileLayer(tileUrl, {attribution: tileAttrib}).addTo(map);
                           }
                           
                        </script>
                        <table border=1 style="position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 100%; height: 100%;">
                           <tr style="height: 100%;">
                              <td>
                                 <div id="map" style="width: 100%; height: 100%;"></div>
                              </td>
                           </tr>
                        </table>
                     </body>
                  </html>
                  

                  解決方案

                  TL;DR:

                  These two are both valid and equivalent:

                  var foo = L.tileLayer(arguments);
                  var foo = new L.TileLayer(arguments);
                  

                  These two are syntactically valid (because of Javascript's historical baggage) but will ultimately result in errors:

                  var foo = new L.tileLayer(arguments);
                  var foo = L.TileLayer(arguments);
                  


                  to add a tilelayer at least two methods can be used, L.TileLayer() and L.tileLayer()

                  Well, they're not really two methods. Technically L.TileLayer is an instance of Object, and L.tileLayer is an instance of Function, which inherits the prototype of Object. And L acts as a namespace rather than a class instance.

                  You see, Object-Oriented Programming in Javascript is weird. You can use the new keyword with pretty much any object which has a prototype. And prototype-based inheritance is confusing to grasp to most people versed in "proper" OOP.

                  Nowadays, with the ES2015 standards and the fancy class keywords this is not really a problem (I'd say it's a problem, but hidden under layers of syntactic sugar). But back in the day, developers had to resort to, let's say, creative solutions for class inheritance which sometimes involves messing with the prototype chain.

                  Leaflet uses a combination of such methods - and as an undesired side effect, L.TileLayer becomes a Function and one can call L.TileLayer() directly and that's quite confusing.

                  Leaflet also uses the concept of factory functions: A function that returns an instance of a class. Quoting from one of the Leaflet tutorials:

                  Most Leaflet classes have a corresponding factory function. A factory function has the same name as the class, but in lowerCamelCase instead of UpperCamelCase:

                  function myBoxClass(name, options) {
                      return new MyBoxClass(name, options);
                  }
                  

                  This is meant just as a convenience: it saves the user from typing the new keyword back in an era where the new keyword was feared.

                  But this creates another undesired side effect, because in Javascript all Functions have a prototype, which means that you can do stuff like

                   function myFunction() { ... }
                   var wtf = new myFunction();
                  

                  Therefore, new L.tileLayer() is also valid syntax (but fails at runtime).


                  then what is the use of L.TileLayer()?

                  Once again, L.TileLayer() as a function call is an undesired side effect. But L.TileLayer represents a class and it's important to have a reference to that, because of things like:

                   if (layer instanceof L.TileLayer)
                  

                  這篇關于何時使用 L.TileLayer 與 L.tileLayer的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Check if a polygon point is inside another in leaflet(檢查一個多邊形點是否在傳單中的另一個內部)
                  Changing leaflet markercluster icon color, inheriting the rest of the default CSS properties(更改傳單標記群集圖標顏色,繼承其余默認 CSS 屬性)
                  Trigger click on leaflet marker(觸發點擊傳單標記)
                  How can I change the default loading tile color in LeafletJS?(如何更改 LeafletJS 中的默認加載磁貼顏色?)
                  Add external geojson to leaflet layer(將外部geojson添加到傳單層)
                  Adding Leaflet layer control to sidebar(將 Leaflet 圖層控件添加到側邊欄)

                    <small id='LR4Gr'></small><noframes id='LR4Gr'>

                      • <bdo id='LR4Gr'></bdo><ul id='LR4Gr'></ul>

                          <tfoot id='LR4Gr'></tfoot><legend id='LR4Gr'><style id='LR4Gr'><dir id='LR4Gr'><q id='LR4Gr'></q></dir></style></legend>

                          <i id='LR4Gr'><tr id='LR4Gr'><dt id='LR4Gr'><q id='LR4Gr'><span id='LR4Gr'><b id='LR4Gr'><form id='LR4Gr'><ins id='LR4Gr'></ins><ul id='LR4Gr'></ul><sub id='LR4Gr'></sub></form><legend id='LR4Gr'></legend><bdo id='LR4Gr'><pre id='LR4Gr'><center id='LR4Gr'></center></pre></bdo></b><th id='LR4Gr'></th></span></q></dt></tr></i><div class="22yiwk2" id='LR4Gr'><tfoot id='LR4Gr'></tfoot><dl id='LR4Gr'><fieldset id='LR4Gr'></fieldset></dl></div>
                            <tbody id='LR4Gr'></tbody>
                          • 主站蜘蛛池模板: 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 荣事达手推洗地机_洗地机厂家_驾驶式扫地机_工业清洁设备 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 水轮机密封网 | 水轮机密封产品研发生产厂家 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌| 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 苏州注册公司_苏州代理记账_苏州工商注册_苏州代办公司-恒佳财税 | 电梯乘运质量测试仪_电梯安全评估测试仪-武汉懿之刻 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 开业庆典_舞龙舞狮_乔迁奠基仪式_开工仪式-神挚龙狮鼓乐文化传媒 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 全自动固相萃取仪_高通量真空平行浓缩仪-勤业永为 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 今日热点_实时热点_奇闻异事_趣闻趣事_灵异事件 - 奇闻事件 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] |