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 相关文章推荐
jQuery中与toggleClass等价的程序段 以及未来学习的方向
Mar 18 Javascript
网页图片延时加载的js代码
Apr 22 Javascript
JS画线(实例代码)
Nov 20 Javascript
jquery操作select大全
Apr 25 Javascript
关于JS数组追加数组采用push.apply的问题
Jun 09 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
Aug 27 Javascript
js仿淘宝和百度文库的评分功能
May 15 Javascript
js获取指定字符前/后的字符串简单实例
Oct 27 Javascript
jquery-mobile表单的创建方法详解
Nov 23 Javascript
JavaScript+CSS相册特效实例代码
Sep 07 Javascript
微信小程序实现跳转的几种方式总结(推荐)
Apr 24 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
Sep 04 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
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
js相册效果代码(点击创建即可)
2013/04/16 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
使用Python爬取最好大学网大学排名
2018/02/24 Python
图解Python变量与赋值
2018/04/03 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
python exit出错原因整理
2020/08/31 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
医学生临床实习自我评价
2014/03/07 职场文书
违纪学生保证书
2015/02/27 职场文书
医院合作意向书范本
2015/05/08 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
教师节主题班会教案
2015/08/17 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
MySQL详细讲解变量variables的用法
2022/06/21 MySQL
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技