引用第三方组件

      酷屏的自定义组件支持引用第三方组件,本文介绍使用百度地图,制作一个gis标点地图。

1、操作步骤


Step1:
      需要访问百度地图API接口网站,申请成为百度地图开发者,获取一个秘钥ak,然后在组件中以下图的方式将ak引入。



Step2:
      初始化gis地图并添加标点和绑定事件


Step3:
      标点以及地图参数



具体代码如下:
复制代码
  1. var myChart = null;
  2. var myData = null;
  3. var myProperty = null;
  4. var myEvents = null;
  5. /*
  6.  * 初始化方法
  7.  *
  8.  * @params cwidget 组件对象
  9.  * @params vardata 取数定义中定义的变量,json格式:{'var1':'xxx'}
  10.  * @params storagedata 组件自己需要存储的值,字符串格式
  11.  * @params events 事件,用户在右边属性上设置的事件, json格式:{'evt1': function(){...}, 'evt2':function(){....}}
  12.  * @params resources 资源及权限校验,json格式:{'resids': ['EBI$12$xxx$1$xxx.rpttpl','EBI$12$xxx$1$xxx.coolrpt'], 'pms': [true, false]}
  13.  */
  14. function init(cwidget, vardata, events, storagedata, resources) {
  15.     var basedom = cwidget.basedom, doc = cwidget.wnd.document;
  16.     myEvents = events;
  17.     initMyData(vardata);
  18.     getValue(cwidget);
  19.     if (!window["GISMap"]) {
  20.         EUI.include("vfs/root/products/ebi/sys/coolrpt/coolresource/js/gismap.js");
  21.     }
  22.     var src = "http://api.map.baidu.com/getscript?v=2.0&ak=XS9zbYnYu6dylRK6hGutsZh6";
  23.     if (EUI.findScript(doc, src) == -1) {
  24.         EUI.addScript(doc, src, function () {
  25.             initMap(cwidget);
  26.         });
  27.     } else {
  28.         initMap(cwidget);
  29.     }
  30. }
  31. function addEvent() {
  32.     myChart.addEvent4AllMarker("click", myEvents["markerClick"]);
  33.     myChart.addEvent4map("click", myEvents["mapClick"]);
  34. }
  35. /**
  36.  * 初始化搜索框
  37.  */
  38. function initSearchDom(basedom) {
  39.     var searchDiv = document.createElement("div");
  40.     searchDiv.className = "gis_search";
  41.     searchDiv.style.zIndex = 100;
  42.     basedom.appendChild(searchDiv);
  43.     var inputDom = document.createElement("input");
  44.     inputDom.type = "search";
  45.     searchDiv.appendChild(inputDom);
  46.     var rightDiv = document.createElement("div");
  47.     rightDiv.className = "gis_rightIcon";
  48.     searchDiv.appendChild(rightDiv);
  49. }
  50. function initMap(cwidget) {
  51.     var basedom = cwidget.basedom;
  52.     myChart = new GISMap(basedom);
  53.     var opt = getMyOption();
  54.     myChart.setOption(opt);
  55.     myChart.setZoom(myProperty["zoomN"]);
  56.     initSearchDom(basedom);
  57.     initMyEvent(basedom);
  58.     if (cwidget.isresultview) {
  59.         //只在结果界面的时候执行,例如只想在结果界面绑定click事件
  60.         addEvent();
  61.     }
  62. }
  63. function initMyEvent(basedom) {
  64.     var inputDom$ = $(basedom).find(".gis_search input"),
  65.         iconDom$ = $(basedom).find(".gis_search .gis_rightIcon");
  66.     myChart.addAutoComplete(inputDom$[0]);
  67.     iconDom$.click(function () {
  68.         var value = inputDom$[0].value;
  69.         myChart.searchPlace(value);
  70.     });
  71. }
  72. /**
  73.  * 初始化数据
  74.  */
  75. function initMyData(vardata) {
  76.     if (!vardata) return;
  77.     myData = {};
  78.     Object.keys(vardata).forEach(function (ele) {
  79.         try {
  80.             myData[ele] = JSON.parse(vardata[ele]);
  81.         } catch (error) {
  82.             myData[ele] = vardata[ele];
  83.         }
  84.     });
  85. }
  86. /**
  87.  * 返回参数
  88.  */
  89. function getMyOption() {
  90.     var opt = {};
  91.     opt.city = myData["city"];
  92.     var color = myProperty["color"];
  93.     opt.overlays = [{ name: myData["city"], color: color[0] }];
  94.     var names = myData["name"], points = myData["point"];
  95.     var iconUrl = myProperty["iconUrl"], size = myProperty["size"],
  96.         hightIconUrl = myProperty["hightIconUrl"], hightSize = myProperty["hightSize"];
  97.     opt.pointObjs = points.map(function (ele, index) {
  98.         return {
  99.             name: names[index],
  100.             point: ele,
  101.             icon: getIcon(iconUrl, size),
  102.             hightIcon: getIcon(hightIconUrl, hightSize)
  103.         };
  104.     });
  105.     return opt;
  106. }
  107. function getIcon(iconUrl, size) {
  108.     if (!iconUrl || !size) return;
  109.     return {
  110.         url: iconUrl,
  111.         size: { width: size[0], height: size[1] }
  112.     }
  113. }
  114. /**
  115.  * 定义了自定义属性时,必须实现该方法,方法名为setProperty
  116.  * 当在属性面板上修改属性后,会调用该方法
  117.  * @param key  属性名
  118.  * @param value  属性值
  119.  * @param cwidget  组件对象
  120.  * @returns
  121.  */
  122. function setProperty(key, value, cwidget) {
  123.     if (key === 'zoomN') {
  124.         value = JSON.parse(value);
  125.         myChart.setZoom(value);
  126.     } else if (key === 'yyy') {
  127.     }
  128. }
  129. /**
  130.  * 刷新操作,数据改变时,调用该方法,重新渲染数据
  131.  * @param cwidget 组件对象
  132.  * @param vardata 取数定义中定义的变量,json格式:{'var1':'xxx'}
  133.  * @param storagedata  组件自己需要存储的值,字符串格式
  134.  * @returns
  135.  */
  136. function refreshDatas(cwidget, vardata, storagedata) {
  137.     var basedom = cwidget.basedom;
  138. }
  139. /**
  140.  * 组件大小改变时执行
  141.  * @param cwidget 组件对象
  142.  * @returns
  143.  */
  144. function resize(cwidget) {
  145. }
  146. /**
  147.  * 获取组件的参数值
  148.  * @param cwidget 组件对象
  149.  * @returns
  150.  */
  151. function getValue(cwidget) {
  152.     myProperty = {
  153.         "color": JSON.parse(cwidget.getProperty("color")),
  154.         "iconUrl": cwidget.getProperty("iconUrl"),
  155.         "hightIconUrl": cwidget.getProperty("hightIconUrl"),
  156.         "size": JSON.parse(cwidget.getProperty("size")),
  157.         "hightSize": JSON.parse(cwidget.getProperty("hightSize")),
  158.         "zoomN": JSON.parse(cwidget.getProperty("zoomN"))
  159.     };
  160. }
  161. /**
  162.  * 获取组件的参数名称
  163.  * @param cwidget 组件对象
  164.  * @returns
  165.  */
  166. function getParamName(cwidget) {
  167. }
  168. /*
  169.  * 销毁操作,销毁自己相关的东西
  170.  */
  171. function dispose(cwidget) {
  172.     if (myChart)
  173.         myChart.dispose();
  174.     myChart = null;
  175.     myData = null;
  176.     myProperty = null;
  177.     myEvents = null;
  178. }

2、文件资源

解压到资源管理器/root/products/ebi/sys/coolrpt/coolresource/js 
资源链接(gismap) :https://bbs.esensoft.com/thread-141283-1-1.html

附件列表

1

文档内容仅供参考
如果您需要解决具体问题,还可以登录亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇制作一个自定义统计图

下一篇导出/导入组件

请先登录