当前位置: 首页 > news >正文

网站设计大全个人免费建站系统

网站设计大全,个人免费建站系统,做网站做百度竞价赚钱,收费用的网站怎么做在共享同一影像底图的服务场景中,如何基于用户权限体系实现差异化的数据可视范围控制?SuperMap iClient3D for WebGL提供了自定义区域影像裁剪的方法。让我们一起看看吧! 一、数据制作 对于上述视频中的地图制作,此处不做讲述&am…

在共享同一影像底图的服务场景中,如何基于用户权限体系实现差异化的数据可视范围控制?SuperMap iClient3D for WebGL提供了自定义区域影像裁剪的方法。让我们一起看看吧!

一、数据制作

对于上述视频中的地图制作,此处不做讲述,如有需要可访问:Online 开发者中心

可视化案例中提供了详细的代码、数据下载链接及数据制作过程。

二、实现思路

影像数据可视范围控制的实现思路如下图所示:

三、关键代码

遍历Geojson数据获取坐标数组关键代码如下:

if (data.type === "MultiPolygon") {// 处理 MultiPolygon 类型的数据,可能包含多个多边形for (let i = 0; i < data.coordinates.length; i++) {for (let j = 0; j < data.coordinates[i].length; j++) {// 获取当前多边形的坐标数组let positions = data.coordinates[i][j];// 用于存储转换后的笛卡尔坐标let superMapPositions = [];for (let k = 0; k < positions.length; k++) {// 将经纬度坐标转换为地理坐标对象,高度设为 0var cartographic = SuperMap3D.Cartographic.fromDegrees(positions[k][0], positions[k][1], 0);// 将地理坐标对象转换为笛卡尔坐标var cartesian = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);superMapPositions.push(cartesian);}// 转换为经纬度和高度数组let finalPositions = [];for (let k = 0, len = superMapPositions.length; k < len; k++) {// 将笛卡尔坐标转换为地理坐标对象var cartographic = SuperMap3D.Cartographic.fromCartesian(superMapPositions[k]);// 将弧度制的经度转换为角度制var longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);// 将弧度制的纬度转换为角度制var latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);// 获取高度值var h = cartographic.height;// 将经纬度和高度值依次添加到数组中finalPositions.push(longitude);finalPositions.push(latitude);finalPositions.push(h);}// 将当前多边形的位置信息添加到 allPositions 数组中allPositions = allPositions.concat(finalPositions);}}
} else if (data.type === "Polygon") {// 处理 Polygon 类型的数据,只包含一个多边形let positions = data.coordinates[0];let superMapPositions = [];for (let i = 0; i < positions.length; i++) {var cartographic = SuperMap3D.Cartographic.fromDegrees(positions[i][0], positions[i][1], 0);var cartesian = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);superMapPositions.push(cartesian);}// 转换为经纬度和高度数组let finalPositions = [];for (let i = 0, len = superMapPositions.length; i < len; i++) {var cartographic = SuperMap3D.Cartographic.fromCartesian(superMapPositions[i]);var longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);var latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);var h = cartographic.height;finalPositions.push(longitude);finalPositions.push(latitude);finalPositions.push(h);}// 将当前多边形的位置信息赋值给 allPositions 数组allPositions = finalPositions;
}

四、示例完整代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>自定义区域影像裁剪</title><link href="../../Build/SuperMap3D/Widgets/widgets.css" rel="stylesheet"><link href="./css/pretty.css" rel="stylesheet"><script src="./js/jquery.min.js"></script><script src="./js/spectrum.js"></script><script src="./js/config.js"></script><script src="./js/tooltip.js"></script><script type="text/javascript" src="../../Build/SuperMap3D/SuperMap3D.js"></script>
</head><body><div id="Container"></div><div id='loadingbar' class="spinner"><div class="spinner-container container1"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container2"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container3"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div></div><div id="toolbar" class="param-container tool-bar"><div class="param-item"><select id="citySelector" style="width: 150px"><option value="" selected disabled hidden>请选择所属区域</option><option value="guiyang_city">贵阳市</option><option value="anshun_city">安顺市</option><option value="bijie_city">毕节市</option><option value="liupanshui_city">六盘水市</option><option value="tongren_city">铜仁市</option><option value="zunyi_city">遵义市</option><option value="qiandongnan_prefecture">黔东南</option><option value="qiannan_prefecture">黔南</option><option value="qianxinan_prefecture">黔西南</option></select></div></div><script>// 定义各城市中心点经纬度信息const cityCenters = {"guiyang_city": [106.713478, 26.578341],"anshun_city": [105.934854, 26.224645],"bijie_city": [105.291238, 27.302327],"liupanshui_city": [104.831343, 26.590612],"tongren_city": [109.188523, 27.704321],"zunyi_city": [106.932211, 27.707422],"qiandongnan_prefecture": [107.983421, 26.587345],"qiannan_prefecture": [107.501234, 26.234567],"qianxinan_prefecture": [104.902345, 25.098765]};// 页面加载完成后执行的函数,初始化 SuperMap3D 地图function onload(SuperMap3D) {// 通过 config.js 中的 getEngineType 函数,获取引擎类型(EngineType),用于设置启动方式let EngineType = getEngineType();// 创建一个 SuperMap3D 的 Viewer 实例,将其显示在 id 为 'Container' 的容器中let viewer = new SuperMap3D.Viewer('Container', {contextOptions: {// 设置 WebGL 上下文类型,Webgl2 对应值为 2,WebGPU 对应值为 3contextType: Number(EngineType),}});// 当场景加载完成后,调用 init 函数进行初始化操作viewer.scenePromise.then(function (scene) {init(SuperMap3D, scene, viewer);});}// 初始化地图场景的函数function init(SuperMap3D, scene, viewer) {// 设置地图的分辨率比例,根据设备的像素比进行调整viewer.resolutionScale = window.devicePixelRatio;$('#loadingbar').remove();// 存储添加的影像图层let tmpLayer = viewer.imageryLayers.addImageryProvider(new SuperMap3D.SuperMapImageryProvider({url: "http://localhost:8090/iserver/services/map-GuiZhou/rest/maps/%E8%B4%B5%E5%B7%9E%E7%9C%81%E5%9C%B0%E5%BD%A2%E5%9B%BE",}));// 设置所加载的影像背景透明,将白色背景设为透明tmpLayer.transparentBackColor = SuperMap3D.Color.fromCssColorString('#ffffff');// 设置透明背景的容差,即与指定颜色相近的颜色也会被视为透明tmpLayer.transparentBackColorTolerance = Number(0.1);// 让地图飞到影像所在的位置,以便用户能看到影像viewer.flyTo(tmpLayer);// 监听城市选择框的 change 事件,当用户选择不同的城市时触发$('#citySelector').change(function () {// 获取用户选择的城市的值var selectedCity = $(this).val();if (selectedCity) {// 根据选择的城市加载对应的 JSON 边界数据文件$.getJSON('./data/json/' + selectedCity + '.json', function (data) {// 用于存储所有多边形的位置信息let allPositions = [];if (data.type === "MultiPolygon") {// 处理 MultiPolygon 类型的数据,可能包含多个多边形for (let i = 0; i < data.coordinates.length; i++) {for (let j = 0; j < data.coordinates[i].length; j++) {// 获取当前多边形的坐标数组let positions = data.coordinates[i][j];// 用于存储转换后的笛卡尔坐标let superMapPositions = [];for (let k = 0; k < positions.length; k++) {// 将经纬度坐标转换为地理坐标对象,高度设为 0var cartographic = SuperMap3D.Cartographic.fromDegrees(positions[k][0], positions[k][1], 0);// 将地理坐标对象转换为笛卡尔坐标var cartesian = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);superMapPositions.push(cartesian);}// 转换为经纬度和高度数组let finalPositions = [];for (let k = 0, len = superMapPositions.length; k < len; k++) {// 将笛卡尔坐标转换为地理坐标对象var cartographic = SuperMap3D.Cartographic.fromCartesian(superMapPositions[k]);// 将弧度制的经度转换为角度制var longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);// 将弧度制的纬度转换为角度制var latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);// 获取高度值var h = cartographic.height;// 将经纬度和高度值依次添加到数组中finalPositions.push(longitude);finalPositions.push(latitude);finalPositions.push(h);}// 将当前多边形的位置信息添加到 allPositions 数组中allPositions = allPositions.concat(finalPositions);}}} else if (data.type === "Polygon") {// 处理 Polygon 类型的数据,只包含一个多边形let positions = data.coordinates[0];let superMapPositions = [];for (let i = 0; i < positions.length; i++) {var cartographic = SuperMap3D.Cartographic.fromDegrees(positions[i][0], positions[i][1], 0);var cartesian = SuperMap3D.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);superMapPositions.push(cartesian);}// 转换为经纬度和高度数组let finalPositions = [];for (let i = 0, len = superMapPositions.length; i < len; i++) {var cartographic = SuperMap3D.Cartographic.fromCartesian(superMapPositions[i]);var longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);var latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);var h = cartographic.height;finalPositions.push(longitude);finalPositions.push(latitude);finalPositions.push(h);}// 将当前多边形的位置信息赋值给 allPositions 数组allPositions = finalPositions;}// 移除之前的裁剪区域,避免重叠viewer.scene.globe.removeImageryClipRegion("clip", [tmpLayer]);// 添加新的裁剪区域,根据选择的城市边界对影像进行裁剪viewer.scene.globe.addImageryClipRegions({position: allPositions,layers: [tmpLayer],name: "clip"});// 获取所选城市的中心点坐标const [lon, lat] = cityCenters[selectedCity];// 创建地理坐标对象const center = SuperMap3D.Cartographic.fromDegrees(lon, lat);// 创建笛卡尔坐标对象const centerCartesian = SuperMap3D.Cartesian3.fromRadians(center.longitude, center.latitude, 530000);// 让地图飞到城市中心点viewer.camera.flyTo({destination: centerCartesian,duration: 3 // 飞行时间,单位为秒});});}});}// 检查 SuperMap3D 是否已经定义,如果已经定义则调用 onload 函数进行初始化if (typeof SuperMap3D!== 'undefined') {onload(SuperMap3D);}</script>
</body></html>

文章转载自:
http://lament.c7617.cn
http://grossularite.c7617.cn
http://perspiratory.c7617.cn
http://nullifidian.c7617.cn
http://bewitching.c7617.cn
http://translatable.c7617.cn
http://redbud.c7617.cn
http://massify.c7617.cn
http://windcharger.c7617.cn
http://vmtp.c7617.cn
http://district.c7617.cn
http://receival.c7617.cn
http://veinal.c7617.cn
http://floorage.c7617.cn
http://trunkless.c7617.cn
http://linkup.c7617.cn
http://pyrogravure.c7617.cn
http://jaundiced.c7617.cn
http://reargue.c7617.cn
http://soph.c7617.cn
http://seif.c7617.cn
http://easternmost.c7617.cn
http://meteyard.c7617.cn
http://opacimeter.c7617.cn
http://aldermanic.c7617.cn
http://mycetozoan.c7617.cn
http://admittable.c7617.cn
http://guido.c7617.cn
http://dichotic.c7617.cn
http://inadaptability.c7617.cn
http://tenancy.c7617.cn
http://loaded.c7617.cn
http://hereditarian.c7617.cn
http://crm.c7617.cn
http://hexanitrate.c7617.cn
http://gangplank.c7617.cn
http://gadarene.c7617.cn
http://astereognosis.c7617.cn
http://prix.c7617.cn
http://spuddle.c7617.cn
http://rhythmless.c7617.cn
http://age.c7617.cn
http://vaccinator.c7617.cn
http://cheerleading.c7617.cn
http://funest.c7617.cn
http://herbivore.c7617.cn
http://pluto.c7617.cn
http://zoogony.c7617.cn
http://phosphatide.c7617.cn
http://terrifying.c7617.cn
http://selcouth.c7617.cn
http://verseman.c7617.cn
http://zoogeography.c7617.cn
http://unafraid.c7617.cn
http://irritant.c7617.cn
http://spaggers.c7617.cn
http://chilloplasty.c7617.cn
http://magnetoplasmadynamic.c7617.cn
http://melange.c7617.cn
http://northlander.c7617.cn
http://neuropathology.c7617.cn
http://peculation.c7617.cn
http://labra.c7617.cn
http://contaminated.c7617.cn
http://beluga.c7617.cn
http://homeothermal.c7617.cn
http://milkman.c7617.cn
http://cointreau.c7617.cn
http://acupuncture.c7617.cn
http://mispronunciation.c7617.cn
http://expiate.c7617.cn
http://radiocompass.c7617.cn
http://brushy.c7617.cn
http://naphtha.c7617.cn
http://adfreeze.c7617.cn
http://plug.c7617.cn
http://brainy.c7617.cn
http://cytology.c7617.cn
http://waddie.c7617.cn
http://pacificist.c7617.cn
http://madeira.c7617.cn
http://squamate.c7617.cn
http://tiliaceous.c7617.cn
http://dianthus.c7617.cn
http://everything.c7617.cn
http://tourney.c7617.cn
http://harshly.c7617.cn
http://sulphide.c7617.cn
http://erasion.c7617.cn
http://frcs.c7617.cn
http://amphictyon.c7617.cn
http://shapeless.c7617.cn
http://ciliary.c7617.cn
http://tamburlaine.c7617.cn
http://skill.c7617.cn
http://clem.c7617.cn
http://dlitt.c7617.cn
http://pseudoscience.c7617.cn
http://hadal.c7617.cn
http://chanteur.c7617.cn
http://www.zhongyajixie.com/news/74397.html

相关文章:

  • 网页制作平台哪个好上海网站排名优化
  • 做网站关键词要懂代码么网络广告营销策略
  • 温州网站制作网站seo招聘
  • 广州在线图文网络科技中心网站建设看b站视频软件下载安装
  • 济南网站制作公司哪家好百度数据分析
  • 大众点评网怎么做团购网站线下推广有哪几种渠道
  • 如何用java web做网站软文广告案例分析
  • 网站想做个链接怎么做网站流量统计平台
  • django做网站怎样昆明新闻头条最新消息
  • 茶叶网站实际案例互联网营销的方法有哪些
  • 阿拉伯语网站广东企业网站seo报价
  • 怎样自己做商场网站上街网络推广
  • 动态网站开发与全程实例pdf迅雷磁力链bt磁力天堂
  • 西安高端网站建设公司百度怎样免费发布信息
  • cms网站是什么网络营销策略分析论文
  • 淘客手机版网站怎么做免费发帖的网站
  • 个人网站建设概述爱站网官网查询域名
  • 如今做哪个网站能致富海淀seo搜索引擎优化公司
  • fullpage wow做的网站百度下载老版本
  • 重庆有哪些做网站的公司chinaz站长素材
  • 对网站建设心得连接友谊
  • 批量查询网站是否正常什么是关键词举例说明
  • 哪个网站可以做装修效果图中国最新消息新闻
  • 国外直播做游戏视频网站有哪些汕头网站建设开发
  • 安阳做网站哪里好百度在线客服问答
  • 做教育业网站外贸网站制作公司
  • java和php开发网站软件推广怎么做
  • 南京农业大学新校区建设网站网络搜索关键词
  • 桂林市区是哪个区北京seo公司有哪些
  • 网站首页的图标是怎么做的系统设置友情链接有什么作用