关于在ArcGIS WebAppBuilder的widget开发中引入EasyUI的一些方法
来源:互联网 发布:access数据库64位下载 编辑:程序博客网 时间:2024/06/06 00:47
widget分为两种,一种是弹出式的(点击弹框),一种是一直停留在地图上的,类似于导航条那种widget。前者参考http://blog.csdn.net/liumengcheng/article/details/70177179
下面说一下后者的开发方式
先看效果:
这个就是驻留在屏幕上的widget,跟导航条widget类似。开发方式如下:
首先在框架的index.html中引入EasyUI,这个跟任何普通的项目引入EasyUI都是类似的:
配置config.json,找到驻留屏幕的widget,然后接着往下配置:
{
"uri":"widgets/XZQList/Widget",
"visible": true,
"position":{"right":18,"top":18,"width":160,"height":30,"relativeTo": "map"},
"version":"2.3",
"id": "widgets_XZQList_Widget_17",
"name":"XZQList"
}
其实没啥难度,就是参考其他驻留在屏幕上的widget的配置方法
示例中widget的代码结构如下:
Widget.js的代码如下:
define([ 'dojo/_base/declare', 'dojo/_base/html', 'dijit/_WidgetsInTemplateMixin', 'jimu/BaseWidget',"dojo/text!./List.html", "dojo/dom-construct", "dojo/dom-style", "dojo/dom-class", 'dojo/_base/lang', "dojo/on", ], function (declare, html, _WidgetsInTemplateMixin, BaseWidget,ListHTML, domConstruct, domStyle, domClass, lang, on) { var clazz = declare([BaseWidget], { name: 'XZQList', //baseClass: 'jimu-widget-BasemapToggle', //创建面板templateString: ListHTML,loadScript:function (url) { var script = document.createElement("script"); script.type = "text/javascript"; script.src = url; document.body.appendChild(script); }, startup: function () { this.inherited(arguments);mainMap=this.map;this.loadScript("widgets/XZQList/code.js"); }, destroy: function () { }, onOpen: function () { }, onClose: function () { } }); clazz.inPanel = false; clazz.hasUIFile = false; return clazz; });
这里面的"dojo/text!./List.html"非常重要,就是把外部的html作为文本引入widget的templateString,这是驻留屏幕式widget的GUI界面开发的核心,其实在infoWindow里面引入EasyUI的界面也是一样的,也是通过dojo/text!这种方式引入的:
代码:
//设置弹框 this.map.infoWindow.setContent(this.htmlString); //设置infoWindow的html的后台jQuery代码 this.loadScript("widgets/LYCX/code.js");var attributes = result.features[0].attributes;console.info(attributes);this.map.infoWindow.setTitle("楼宇查询:"+attributes.Name); this.map.infoWindow.resize(615, 570);this.map.infoWindow.show(mapPoint);
List.html内容很简单:
<div> <input id="myXZQComboBox" value="全部地区"> </div>
code.js如下,跟普通的jQuery,EasyUI开发方式没啥区别:
$(document).ready(function (){ //初始化下拉列表框 $('#myXZQComboBox').combobox({ url:null,valueField:'id', textField:'text' }); var data2=[{"id":1,"text":"全部地区","selected":true},{"id":2,"text":"00001白洋湾"},{"id":3,"text":"00002彩香"},{"id":4,"text":"00003石路"},{"id":5,"text":"00004留园"}]; $('#myXZQComboBox').combobox('loadData', data2); $("#myXZQComboBox").combobox({onChange: function (n,o) {var code=$('#myXZQComboBox').combobox('getText').substr(0,5);console.info(code);var layerDefinitions = [];if(code=="全部地区"){ layerDefinitions[0] = "1=1";}else{ layerDefinitions[0] = "code like '"+code+"%'";} var suzhouLayer=mainMap.getLayer("suzhouly_48"); suzhouLayer.setLayerDefinitions(layerDefinitions);}}); gisCode();});function gisCode(){ require([ "dojo/dom", "dojo/on", "dojo/Deferred", "jimu/WidgetManager", "jimu/LayerInfos/LayerInfos", "esri/Color", "esri/config", "esri/geometry/webMercatorUtils", "esri/graphic", "esri/geometry/Extent", "esri/lang", "esri/map", "esri/SpatialReference", "esri/tasks/ProjectParameters", "esri/symbols/SimpleFillSymbol", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleMarkerSymbol", "dojo/domReady!" ], function (dom, on,Deferred,WidgetManager,LayerInfos,Color, esriConfig, webMercatorUtils, Graphic,Extent,lang,Map,SpatialReference,ProjectParameters,SimpleFillSymbol, SimpleLineSymbol, SimpleMarkerSymbol){console.info("gis code");} )}
- 关于在ArcGIS WebAppBuilder的widget开发中引入EasyUI的一些方法
- 在ArcGIS WebAppBuilder中的widget中嵌入EasyUI的图形化控件
- webappbuilder框架中获取URL传参的方法
- 关于widget的一些知识
- 关于webappbuilder for ArcGIS下拉菜单
- 在HTML中引入CSS的方法
- 在html中引入CSS的方法
- 在Html中引入CSS的方法
- 在html中引入CSS的方法
- 在HTML中引入CSS的方法
- 在html中引入CSS的方法
- 在vue中引入jQuery的方法
- 关于在WP7的XNA开发模式中引入广告(Ad)
- easyui的引入
- arcgis server 中关于使用maptip的一些tips
- EasyUI的一些封装方法
- ArcGIS Engine 开发中一些常用的语句
- 在HTML中引入CSS的方法几种方法
- Java校验身份证号码合法性
- Linux下运行Python脚本显示“: /usr/bin/env "python\r" 找不到那个文件或目录
- pandas之算数运算和数据对齐--带有重复值的轴索引
- TortoiseGit 要私钥和公钥设置
- 编译 .wxml 文件错误, 错误信息:未找到页面 pages/index/index 对应的 wxml 文件
- 关于在ArcGIS WebAppBuilder的widget开发中引入EasyUI的一些方法
- 开发必备---你应该知道的一些 ADB 命令
- 【Python】 sort、sorted高级排序技巧
- 浅谈Git(四)
- 使用pdfbox与itext设置pdf文件密码
- 1+2+3+.........+N 的n种解法
- 第一个Hello World在cmd中执行错误
- 应用程序方法数超过限制解决办法
- 二分搜索