日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

基于ArcGIS JS API封装dojo微件(以工具条为例)

發布時間:2025/3/21 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于ArcGIS JS API封装dojo微件(以工具条为例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.應用場景:

我們知道ArcGIS JS API自帶了一些微件(或者說是控件),比如縮放按鈕、定位按鈕等等。但是有的時候這些微件的樣式不太符合項目實際要求,或者是項目上想要把這些組合起來,這時候我們就需要自己封裝一套微件了。下面用一個工具條微件作為例子,總結一下過程,效果圖:

2.封裝步驟:

一個微件可以用一個dojo模塊表示,在dojo模塊中定義一個類,使用時直接實例化類就可以了。最后有整段代碼。

2.1 定義模塊

通過define定義模塊,基本格式:

define([依賴模塊],function(){//回調函數return 0; //下步會定義一個類,返回 });

封裝微件一般會依賴這幾個模塊:

"dijit/_WidgetBase",//微件基類 "dijit/_TemplatedMixin", "dijit/_OnDijitClickMixin",

2.2 定義類

通過declare定義類,基本格式:

declare("類名",[依賴的類],{//類的主體//定義基本屬性,構造方法等 });

2.3 定義html模板

微件需要通過DOM節點進行展示,要先定義好基本模板,Toolbar.html

<ul class="toolbar"><li><img src="./Toolbar/assets/放大.png" title="放大" data-dojo-attach-event="ondijitclick:mapZoomIn"></li><li><img src="./Toolbar/assets/縮小.png" title="縮小" data-dojo-attach-event="ondijitclick:mapZoomOut"></li><li><img src="./Toolbar/assets/平移.png" title="平移" data-dojo-attach-event="ondijitclick:mapPan"></li><li class="no-border"><img src="./Toolbar/assets/全圖.png" title="默認視圖" data-dojo-attach-event="ondijitclick:mapZoomToFullExtent"></li> </ul>

2.4 定義樣式

為了讓微件布局更好看,需要css樣式,Toolbar.css

div,ul,li{padding: 0;margin: 0;list-style: none; }.toolbar{position: absolute;top: 20px;right: 300px;height: 42px;width: 172px;overflow: hidden;background-color: #fff;border-radius: 8px;-moz-box-shadow: -6px 6px 5px #cccccc;-webkit-box-shadow:-6px 6px 5px #cccccc;box-shadow: -6px 6px 5px #cccccc; } .toolbar>li{float: left;position: relative;height: 26px;width: 41px;border-right: 2px solid #f5f5f5;margin: 8px 0 0 0;cursor: pointer; } .toolbar>li.no-border{border: 0;width: 40px; }

2.5 添加屬性、構造函數、基本方法

Toolbar.js

define(["dojo/_base/declare","esri/toolbars/navigation","dijit/_WidgetBase","dijit/_TemplatedMixin","dijit/_OnDijitClickMixin","dojo/text!./templates/Toolbar.html", ], function (declare,Navigation,_WidgetBase,_TemplatedMixin,_OnDijitClickMixin,template, ) {return declare([_WidgetBase,_TemplatedMixin,_OnDijitClickMixin], {_map: null,_naviBar: null,templateString:template,//html模板constructor: function (options) {var me = this;me._map = options.map;me._naviBar = new Navigation(me._map);},//平移mapPan: function() {this._naviBar.activate(Navigation.PAN);},//地圖放大mapZoomIn: function() {this._naviBar.activate(Navigation.ZOOM_IN);},//地圖縮小mapZoomOut: function() {this._naviBar.activate(Navigation.ZOOM_OUT);},//縮放至全圖mapZoomToFullExtent: function() {this._naviBar.zoomToFullExtent();},}); });

2.6 測試

注意:要使用自己封裝的本地模塊,必須添加dojo配置,否則在加載模塊時會找不到

index.html

<!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/><title>My Dijit</title><link rel="stylesheet" href="https://js.arcgis.com/3.27/esri/css/esri.css"><link rel="stylesheet" href="Toolbar/style/Toolbar.css"><style>html, body, #map {height: 100%;margin: 0;padding: 0;}</style><script>var package_path = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/'));var dojoConfig = {// The locationPath logic below may look confusing but all its doing is// enabling us to load the api from a CDN and load local modules from the correct location.packages: [{name: "myDijit",location: package_path + '/Toolbar'}]};</script><script src="https://js.arcgis.com/3.27/"></script><script>var _map,_toolbar;require(["esri/map","myDijit/Toolbar","dojo/domReady!"], function(Map,Toolbar) {_map = new Map("map", {basemap: "topo", //For full list of pre-defined basemaps, navigate to http://arcg.is/1JVo6Wdcenter: [-122.45, 37.75], // longitude, latitudezoom: 13});var mapDiv = document.getElementById("map");var mapToolDiv = document.createElement('div');mapToolDiv.id = 'mapToolbar_';var options = {map:_map,};_toolbar = new Toolbar(options);// new Toolbar(options,srcDomRef);_toolbar.placeAt(mapToolDiv);mapDiv.appendChild(mapToolDiv);});//https://developers.arcgis.com/javascript/3/jshelp/intro_custom_dijit.html//https://github.com/Esri/arcgis-dijit-home-button-js//https://dojotoolkit.org/reference-guide/1.10/quickstart/writingWidgets.html#//構造方法,var params={}//<!--注意html模板內的DOM節點屬性應采用dojo可識別的,如單擊監聽事件data-dojo-attach-event="ondijitclick:,而不是(onclick)--></script> </head><body> <div id="map"></div> </body> </html>

3. 踩坑提醒:

3.1 dojoConfig要在引入init.js文件之前先加上,否則配置不會生效;

3.2 微件類的構造函數傳參時不要直接把map對象傳進去,要用對象包一層:

var toolbar = new Toolbar(_map);//有問題var options = {map:_map} var toolbar = new Toolbar(options);//正常constructor: function(options){map = options.map; }

3.3?注意html模板內的DOM節點屬性應采用dojo可識別的,如單擊監聽事件data-dojo-attach-event="ondijitclick:,而不是onclick,直接用οnclick="fun1()"是沒作用的。

<!--點擊無反應--> <img src="./Toolbar/assets/平移.png" title="平移" onclick="mapPan ()"><!--點擊正常--> <img src="./Toolbar/assets/平移.png" title="平移" data-dojo-attach-event="ondijitclick:mapPan">

源代碼下載地址:https://download.csdn.net/download/wml00000/10972736

參考資料鏈接:

https://developers.arcgis.com/javascript/3/jshelp/intro_custom_dijit.html

https://github.com/Esri/arcgis-dijit-home-button-js

https://dojotoolkit.org/reference-guide/1.10/quickstart/writingWidgets.html#

總結

以上是生活随笔為你收集整理的基于ArcGIS JS API封装dojo微件(以工具条为例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人人做人人爱人人爽 | 日本一区二区免费在线观看 | 91尤物在线| 国产高清自拍av | 女人脱了内裤趴开腿让男躁 | 国产日批视频在线观看 | 亚洲一区中文字幕永久在线 | 亚洲天堂资源在线 | 中文字幕精品在线视频 | 永久视频在线 | 极品国产白皙 | 九九视频这里只有精品 | 国产成人av电影 | 自拍1页 | 狠狠鲁影院 | 日韩一区二区三区在线播放 | 调教亲女小嫩苞h文小说 | 国产玖玖视频 | 国产一级二级在线观看 | 韩国av三级 | 在线免费h | 亚洲国产精品网站 | 国产精品久久综合青草亚洲AV | 91麻豆产精品久久久久久 | 免费h片网站 | 在线综合网 | 青草青视频 | 亚洲人和日本人hd | 四虎成人精品 | 人妻一区二区在线 | 日韩成人av在线 | 成人高潮片免费网站 | 在线观看 一区 | 在线观看国产免费视频 | 国内自拍第二页 | 亚洲精品永久免费 | 九色蝌蚪91| 穿扒开跪着折磨屁股视频 | 午夜色片| 国产这里只有精品 | 日本久久黄色 | 日本va欧美va欧美va精品 | 亚洲欧洲视频在线观看 | av手机网| 亚洲性喷水| 免费黄色小视频在线观看 | 99这里只有 | 丰满肉肉bbwwbbww | 无码aⅴ精品一区二区三区 精品久久在线 | 国产艳俗歌舞表演hd | 丰满岳乱妇在线观看中字无码 | 九色91蝌蚪 | 精品久久久久久久久久久久久久 | 韩日av一区二区 | 四虎成人在线 | 色性网站 | 手机福利在线 | 日韩av网址大全 | 毛片毛片毛片毛片 | 污污在线免费观看 | 男女视频免费观看 | 国产高潮久久 | 成人高清网站 | 日韩乱码人妻无码中文字幕久久 | 一级大片免费 | 日本熟妇一区二区 | av资源网在线观看 | 欧美不卡网 | 小柔的淫辱日记(1~7) | 深夜视频免费在线观看 | 欧美性极品 | 古风h啪肉h文 | 欧美一区二区三区爽爽爽 | 天堂在线官网 | 爆操网站| 美女脱衣服一干二净 | 欧美日韩亚洲一区二区 | www.中文字幕 | 国产精品自拍视频一区 | av免费在线观看网址 | 亚洲精品国产精品乱码不卡√香蕉 | 97夜色 | 第一av| 高清乱码免费 | 日韩精品成人无码专区免费 | 亚洲粉嫩 | 久草97 | www亚洲天堂| 动漫美女被吸奶 | 亚洲天堂2018av| 91青青操| 色窝| 国产精品久久久久久久久久直播 | 黑丝一区二区三区 | 日韩视频精品在线 | 国产高清视频在线播放 | 九九热九九热 | 椎名空在线 | 朝桐光av一区二区三区 |