cesium添加shp图层实现显示或隐藏行政界线

<!DOCTYPE html>

<html lang="en">

<head>

<!-- Use correct character set. -->

<meta charset="utf-8">

<!-- Tell IE to use the latest, best version. -->

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<!-- Make the application on mobile take up the full browser screen and disable user scaling. -->

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">

<title>行政区划图</title>

<script src="../Build/Cesium/Cesium.js"></script>

<style>

@import url(../Build/Cesium/Widgets/widgets.css);

html, body, #cesiumContainer {

width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;

}

</style>

</head>

<body>

<input id="check" type="checkbox" onclick="checkboxOnclick(this,ProvinceUrl)" /> 行政区划-省 <br>

<input id="check" type="checkbox" onclick="checkboxOnclick(this,CityUrl)" /> 行政区划-市 <br>

<input id="check" type="checkbox" onclick="checkboxOnclick(this,CountyUrl)" /> 行政区划-县 <br>

<input id="check" type="checkbox" onclick="checkboxOnclick(this,TownUrl)" /> 行政区划-乡镇 <br>

<div id="cesiumContainer"></div>

<script>

var myurl = "http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali";

var myMapSource = new Cesium.UrlTemplateImageryProvider({url:myurl});

var myviewer = new Cesium.Viewer("cesiumContainer",{

imageryProvider:myMapSource,

baseLayerPicker:false,

// terrainProvider:Cesium.createWorldTerrain({

//     requestVertexNormals:true,

//     requestWaterMask:true,

// })

});

var ProvinceUrl ="cseium:shengwgs84";

var CityUrl ="cesium:city1";

var CountyUrl ="cesium:county";

var TownUrl ="cesium:town";

function checkboxOnclick(checkbox,shplayer) {

var providerShp = new Cesium.WebMapServiceImageryProvider({

url:"http://127.0.0.1:8083/geoserver/cesium/wms",

layers:shplayer,//

fill:Cesium.Color.PINK.withAlpha(0.1),

parameters:{

service:"WMS",

format:"image/png",

transparent:true

}

});

if(checkbox.checked===true){

y =myviewer.imageryLayers.addImageryProvider(providerShp);

}

else

{

myviewer.imageryLayers.remove(y);

}

}

</script>

</body>

</html>

一、希望实现的功能:选中复选框,显示行政界限;清除复选框,清除行政界限。实现思路:做好的shp文件,通过geo发布并设置样式;js中写一个复选功能函数,实现点击运行;标签中采用input type=checkbox,onclick=函数。详细可见全代码。

二、思路:虽然是cesium一个入门级的功能,但是也做了好几天,第一种思路是将shp转为本地json文件,到了乡镇级别,json文件已经百兆以上,功能实现后加载非常卡。但是这种方法小文件可以,本地加载json的样式、字体等都容易设置。所以转换思路采用切片通过geoserver发布。

三、遇到的问题及解决方案:

1、geosercer无法发布的问题。网上有很多原因,不再复赘,个人遇到的一个问题,在引用本地wms时候,一定要注意这个地址是否正确,可以先试一下。比如常规是localhost:***,本机为

127.0.0.1。

2、geoserver发布后的字体问题,主要还是要将编码encode设置为GB2312,geoserver有2处,一处是style样式中的encoding,一处是数据存储中具体数据的“DBF的字符集”;html文件不需要更改。

3、顺利加载后,选择<input type=“checkebox”>标签,配合js的if(checkebox.checked===ture),else语句,应该说还是比较简单的。这里遇到了清除复选框后,图层无法消失的问题。实际上,最初就意识到了,图层应该为全局变量,否则在else中无法清楚if中的变量所以在头部写了 var y(图层名),但是无论如何都无法成功,后来又尝试了各种办法(比如删除1-n图层,0为底图)都有问题。百度后才知道,不用var,直接写变量名为全局变量,这是个人js刚初入问题。https://blog.csdn.net/less_cold/article/details/52594083

原文地址:https://www.cnblogs.com/xiaoguniang0204/p/11566915.html

时间: 2024-10-16 07:05:56

cesium添加shp图层实现显示或隐藏行政界线的相关文章

如何控制android系统中NavigationBar 的显示与隐藏

我们使用的大多数android手机上的Home键,返回键以及menu键都是实体触摸感应按键.如果你用Google的Nexus4或Nexus5话,你会发现它们并没有实体按键或触摸感应按键,取而代之的是在屏幕的下方加了一个小黑条,在这个黑条上有3个按钮控件,这种设置无疑使得手机的外观的设计更加简约.但我遇到身边用Nexus 4手机的人都吐槽这种设计,原因很简单:好端端的屏幕,被划出一块区域用来显示3个按钮(如下图所示):Back, Home, Recent.并且它一直用在那里占用着. 在androi

WordPress添加显示和隐藏侧边栏按钮开关

在很多的地方都看见过这种效果,就是在文章页面可以切换显示和隐藏侧边栏功能,感觉还是很有用,比如一篇文章的文字内容过多,那么就可以通过隐藏侧边栏来显示更多的文字便于浏览.比如你可以通过点击我文章标题下方的隐藏侧栏按钮来查看效果. 点击前: 点击后: 实现代码: 1.在header.php中添加如下代码,当然也可以单独写进一个js文件,然后在header.php中引入也可以,我是引入的. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <scri

安卓监听键盘显示和隐藏

问题概况:横板cocos2dx游戏,点击输入框弹出键盘时,界面要求跟随网上平易,不能挡住输入框.这种问题只出现在非全屏键盘到情况下. 方案1:mainActivity重写onconfigurationChanged,监听屏幕方向旋转,添加Android:configChanges="orientation|keyboard". 缺点全屏下无效,如果设置为非全屏,<activity android:theme="@android:style/Theme.NoTitleBa

JavaScript网站设计实践(四)编写about.html页面,利用JavaScript和DOM,选择性的显示和隐藏DIV元素

一.现在我们在网站设计(三)的基础上,来编写about.html页面. 这个页面要用到的知识点是利用JavaScript和DOM实现选择性地显示和隐藏某些DIV about.html页面在前面我们为了看导航栏菜单项高亮显示时,已经写了部分内容,只是那时写的代码没有实现div显示和隐藏,现在就在之前编写的基础上,为页面添加显示和隐藏div的效果. 没有写JavaScript之前看到的效果: 实现后的效果图: 这个就是我们现在要做的效果. 1.背景: 我们在about.html页面中写了一个ul列表

通过设置标签class值控制标签的显示与隐藏

需求背景如下: 原项目居民.单位.计量三模块共用一个jsp文件,显示的页面也顺理成章的统一了,幸亏没有调用同一个js,在此基础上要求居民和单位计量的分离,即居民的显示居民的相关信息,单位和计量的显示相同的信息,时间久远,仅有的未修改前的页面截图如下(红框内字段已替换成红字): 需求分析: (1)项目中添加字段并实现增删改查功能 (2)页面的展示,居民显示居民相关字段,单位和计量显示单位相关字段 字段添加这里不再赘述,主要分析页面的显示 刚开始拿到这个需求,打算另外新建单位相关的jsp页面(只包含

C#中GDAL读写shp图层

采用GDAL17的C#库进行shp图层属性表读取和修改操作,C#DLL库解压后包含文件如下: 添加引用主要是带csharp的gdal.ogr.osr三个DLL,程序代码如下: using OSGeo.OGR; using OSGeo.OSR; using OSGeo.GDAL; 1.    读取shp图层操作 public void Reforming(string shpFilePath) { Gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8",

JS实现点击参数面板按钮显示或隐藏数据

当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板添加一个标签控件,控件名为lable,设置标签控件不可见,控件值为"显示". 在参数面板添加一个按钮控件,控件名为button,控件值为"只显示合计数据",并添加点击事件. 编辑点击事件,添加下面的JavaScript代码: /*获取隐藏的标签控件的值*/ var la

shp图层创建

IField,IFieldEdit,IFields,IFieldsEdit,IGeometryDef,IGeometryDefEdit接口  (2013-05-06 20:40:27) 转载▼ 标签: arcgisengine二次开发 it 分类: ArcGISEngine开发 IField,IFieldEdit,IFields,IFieldsEdit,IGeometryDef,IGeometryDefEdit接口 字段对应表中的一列,一个要素类必须有至少2个字段,而多个字段的集合就构成了字段集

在RecyclerView列表滚动的时候显示或者隐藏Toolbar

先看一下效果: 本文将讲解如何实现类似于Google+应用中,当列表滚动的时候,ToolBar(以及悬浮操作按钮)的显示与隐藏(向下滚动隐藏,向上滚动显示),这种效果在Material Design 清单中有提到: "在合适的地方,当列表向下滚动,app bar可以退出屏幕,以便为内容区域留下更多的空间:而当列表向上滚动回来的时候,app bar又重新显示出来". 注:这里的向下滚动是指滚动到下面查看更多内容,相对应的手势操作其实是往上.同理向上滚动是指查看前面的内容,而手势其实是向下