Openlayers+EasyUI Tree动态实现图层控制


Posted in Javascript onSeptember 28, 2020

本文实例为大家分享了Openlayers+EasyUI Tree动态实现图层控制的具体代码,供大家参考,具体内容如下

功能介绍

主要功能

根据openlayers3.0与easyUI tree 功能实现图层显隐控制功能,达到子节点选择实现单个图层的显隐,父节点选择实现所有图层的显隐。

页面展示

Openlayers+EasyUI Tree动态实现图层控制

主要代码

HTML+CSS

#xuanfu1 {
 position: absolute;
 top: 50px;
 right: 40px;
 background-color: rgba(134,149,237,0.7);
 width: 170px;
 height: 300px;
 z-index: 1;
 }
<div id="main">
 <div id="xuanfu1">
 <ul id="tt" class="easyui-tree" data-options="checkbox:true"></ul> 
 </div>

 <div id="map" style="height: 100%;width:100%;position:relative;background:#ffffff"></div>
</div>

JS

$(document).ready(function () {
 $.ajax({
 url: "TCKZDataQuery",
 success: function (data) {
 var datatrans= JSON.parse(data);
 var dataArr = datatrans.rows;
 CreatTree(dataArr); //创建树
 AddLayers(dataArr); //添加图层
 },
 });
 TCKZguanlian(); //树与图层控制关联
 })

//-----------创建图层控制树----------
 function CreatTree(dataArr) {
 $('#tt').tree({
 data: [{
 id: 1,
 text: '功能图层',
 state: 'open',

 }, {
 id: 2,
 text: '专题图层',
 state: 'open',
 children: [{
  id: 21,
  text: '铁路线',
  checked: true,
 }, {
  id: 22,
  text: '车站',
  checked: true,
 }]
 }, {
 id: 3,
 text: '卫星影像',
 checked: true,
 }
 ]
 });
 
 var node = $('#tt').tree('find', 1);
 var nodes = [{ id: '11', text: '绘制图层', checked: true }];
 if (node) {
 for (i = 0; i < dataArr.length; i++) {
 var kejian;
 if (dataArr[i].VISIBLE == 'true') {
  kejian = true;
 } else {
  kejian = false;
 }
 nodes.push({ id: dataArr[i].ID, text: dataArr[i].TCM, checked: kejian });
 }
 $('#tt').tree('append', {
 parent: node.target,
 data: nodes
 });
 }
 }
//-----------树与图层控制关联------------
 function TCKZguanlian(){
 $("#tt").tree({
 onCheck: function (node) {
 var nodechi = $('#tt').tree('find', node.id);
 var nodechildren = $('#tt').tree("getChildren", nodechi.target);

 var AllLayers = map.getLayers().a;
 if (nodechildren == null || nodechildren=='') { //如果为子节点
  for (i = 0; i < AllLayers.length; i++) {
  var tcname1 = node.text;
  var tcname2 = AllLayers[i].get('title');
  if (tcname1 == tcname2) {
  AllLayers[i].setVisible(node.checked);
  }
  }
 } else {    //如果为父节点
  for (j = 0; j < nodechildren.length; j++) {
  var tcname1 = nodechildren[j].text;
  for (i = 0; i < AllLayers.length; i++) {
  var tcname2 = AllLayers[i].get('title');
  if (tcname1 == tcname2) {
  AllLayers[i].setVisible(node.checked);
  }
  }
  }
 }
 }
 })
 }

//定义地图
 var map = new ol.Map({
 controls: ol.control.defaults({
 attribution: false
 }).extend([
 //定义鼠标获取坐标控件
 new ol.control.MousePosition({
 projection: 'EPSG:4326',
 coordinateFormat: ol.coordinate.createStringXY(5)//坐标精确度
 }),
 new ol.control.OverviewMap(),//缩略图控件
 new ol.control.ScaleLine(),// 比例尺控件
 new ol.control.ZoomSlider(),// 缩放刻度控件
 ]),
 target: 'map',
 layers: [
 //铁路线
 new ol.layer.Tile({
 title: '铁路线', // 定义铁路线wms地图,geoserver发布
 visible: true,
 source: new ol.source.TileWMS({
  url: 'http://127.0.0.1:8085/geoserver/lzjgjt/wms',
  params: {
  'FORMAT': 'image/png',
  'VERSION': '1.1.1',
  tiled: true,
  "LAYERS": 'lzjgjt:xianlu_polyline',
  "exceptions": 'application/vnd.ogc.se_inimage',
  tilesOrigin: 93.408493 + "," + 32.439911
  }
 })
 }),
 //车站
 new ol.layer.Tile({
 title: '车站',
 visible: true,
 source: new ol.source.TileWMS({
  url: 'http://127.0.0.1:8085/geoserver/lzjgjt/wms',
  params: {
  'FORMAT': 'image/png',
  'VERSION': '1.1.1',
  tiled: true,
  "LAYERS": 'lzjgjt:chezhan_point',
  "exceptions": 'application/vnd.ogc.se_inimage',
  tilesOrigin: 93.487889 + "," + 32.441091
  }
 })
 }),
 
 ],
 view: new ol.View({
 center: ol.proj.fromLonLat([104.06684, 34.39373]),
 zoom: 6,
 //限制地图缩放级别
 minZoom: 4,
 maxZoom: 16,
 })
 });

C#

#region 图层控制
 public ActionResult TCKZDataQuery()
 {
 string sql = " select * from TUCENG_DIC t ";
 string jsonData = GetJeJsonData(db.Database.Connection.ConnectionString, sql, Request);
 return Content(jsonData);
 }
 #endregion

图层数据格式

Openlayers+EasyUI Tree动态实现图层控制

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE浏览器PNG图片透明效果代码
Sep 02 Javascript
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
jquery无刷新验证邮箱地址实现实例
Feb 19 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
VUEJS实战之构建基础并渲染出列表(1)
Jun 13 Javascript
AngularJs  Understanding Angular Templates
Sep 02 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
Angular路由ui-router配置详解
Aug 01 Javascript
layui 表格的属性的显示转换方法
Aug 14 Javascript
少女风vue组件库的制作全过程
May 15 Javascript
Vue实现搜索结果高亮显示关键字
May 28 Javascript
JS sort排序详细使用方法示例解析
Sep 27 #Javascript
vue中实现点击变成全屏的多种方法
Sep 27 #Javascript
通过实例解析json与jsonp原理及使用方法
Sep 27 #Javascript
React 条件渲染最佳实践小结(7种)
Sep 27 #Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
Sep 27 #Javascript
react-intl实现React国际化多语言的方法
Sep 27 #Javascript
Javascript异步流程控制之串行执行详解
Sep 27 #Javascript
You might like
十天学会php之第八天
2006/10/09 PHP
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
PHP语法自动检查的Vim插件
2014/08/11 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
Python 面向对象 成员的访问约束
2008/12/23 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python环境变量设置方法
2016/08/28 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
python Gabor滤波器讲解
2020/10/26 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
Weblogic的布署方式
2013/08/23 面试题
英文求职信结束语大全
2013/10/26 职场文书
怎么写有吸引力的自荐信
2013/11/17 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
刑事上诉状范文
2015/05/22 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
比较几种Redis集群方案
2021/06/21 Redis