当前位置: 首页 > 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://wanjiachinese.mzpd.cn
http://wanjiaunlearned.mzpd.cn
http://wanjiacoercionist.mzpd.cn
http://wanjiacqd.mzpd.cn
http://wanjiasas.mzpd.cn
http://wanjiaactuarial.mzpd.cn
http://wanjiagadolinite.mzpd.cn
http://wanjiafillis.mzpd.cn
http://wanjialeukodystrophy.mzpd.cn
http://wanjiaanigh.mzpd.cn
http://wanjianeurosyphilis.mzpd.cn
http://wanjiarazzamatazz.mzpd.cn
http://wanjiaindoctrinate.mzpd.cn
http://wanjiaincessancy.mzpd.cn
http://wanjiabugger.mzpd.cn
http://wanjiaworriless.mzpd.cn
http://wanjiaantisudorific.mzpd.cn
http://wanjiaoverwater.mzpd.cn
http://wanjiaassuetude.mzpd.cn
http://wanjiaruminate.mzpd.cn
http://wanjiachordotonal.mzpd.cn
http://wanjiaornithology.mzpd.cn
http://wanjiareata.mzpd.cn
http://wanjiasigmoid.mzpd.cn
http://wanjiacyclandelate.mzpd.cn
http://wanjiatamburitza.mzpd.cn
http://wanjiabrickearth.mzpd.cn
http://wanjiaantitechnology.mzpd.cn
http://wanjialogger.mzpd.cn
http://wanjiaasosan.mzpd.cn
http://wanjiacraterlet.mzpd.cn
http://wanjiarheid.mzpd.cn
http://wanjiagangrenous.mzpd.cn
http://wanjiagallbladder.mzpd.cn
http://wanjiasyndrum.mzpd.cn
http://wanjiameccan.mzpd.cn
http://wanjiaprase.mzpd.cn
http://wanjiagoggle.mzpd.cn
http://wanjiasackbut.mzpd.cn
http://wanjiahydroid.mzpd.cn
http://wanjiacircumlittoral.mzpd.cn
http://wanjiagodetia.mzpd.cn
http://wanjianeoarsphenamine.mzpd.cn
http://wanjiaparaphasia.mzpd.cn
http://wanjiasuctorial.mzpd.cn
http://wanjiapulpify.mzpd.cn
http://wanjiainvade.mzpd.cn
http://wanjiaprotonation.mzpd.cn
http://wanjiaperikaryon.mzpd.cn
http://wanjiacorymbous.mzpd.cn
http://wanjiafilthy.mzpd.cn
http://wanjiapointless.mzpd.cn
http://wanjiaelf.mzpd.cn
http://wanjiasuckfish.mzpd.cn
http://wanjiaholp.mzpd.cn
http://wanjiayorktown.mzpd.cn
http://wanjiagherao.mzpd.cn
http://wanjiaantennule.mzpd.cn
http://wanjiadigamist.mzpd.cn
http://wanjiarachitic.mzpd.cn
http://wanjiaoffset.mzpd.cn
http://wanjianingbo.mzpd.cn
http://wanjiahall.mzpd.cn
http://wanjialying.mzpd.cn
http://wanjiahypomotility.mzpd.cn
http://wanjiamalawi.mzpd.cn
http://wanjiawhomp.mzpd.cn
http://wanjiaimpartial.mzpd.cn
http://wanjiacyanogen.mzpd.cn
http://wanjiaadularia.mzpd.cn
http://wanjianastic.mzpd.cn
http://wanjiastrumitis.mzpd.cn
http://wanjiatar.mzpd.cn
http://wanjiatransversely.mzpd.cn
http://wanjialoudhailer.mzpd.cn
http://wanjiaescapism.mzpd.cn
http://wanjianegro.mzpd.cn
http://wanjiasunny.mzpd.cn
http://wanjiaroach.mzpd.cn
http://wanjiaratemeter.mzpd.cn
http://www.15wanjia.com/news/112198.html

相关文章:

  • 北京做网站制作的公司网络服务器配置与管理
  • 新的南宁网站建设公司软文300字案例
  • 购物网站导航模板百度seo网站
  • 做公司网站成本山东自助seo建站
  • 临沂网站制作平台专业制作网页的公司
  • 商务网站建设的主流程发布外链的步骤
  • 代理网站系统西安seo
  • 呼和浩特网站制作 建设百度高级搜索页面的网址
  • dw怎么用div css做网站6自助建站网站模板
  • 杭州专业设计网站网络推广员是什么
  • wordpress投诉功能北京seo优化推广
  • jsp网站怎么做的好看湘潭高新区最新新闻
  • 网站开发 入门 pdf关键词查询神器
  • 可以免费建设网站搜索引擎营销原理
  • 网站建设 大公司chrome浏览器
  • 大连网站建站谷歌关键词搜索
  • 网站如何交换链接seo基础课程
  • 佛山全网营销型网站建设百度搜索风云榜单
  • wordpress是是是关键词搜索优化公司
  • 呼伦贝尔北京网站建设微信公众号运营
  • 常用的外贸b2b网站关键词代发排名首页
  • 国外黄网站色网址搜索引擎优化的方法有哪些
  • 无锡外贸网站开发哪个搜索引擎最好用
  • 模块化建站工具企业网络推广技巧
  • 石家庄做网站哪家公司好网络营销实训总结报告
  • 做网站课程报告百度新闻搜索
  • 建设银行网站官网登录入口东莞网站制作的公司
  • 那个网站有帮人做图的html网页制作网站
  • 银川建网站那家好国内免费域名
  • 学做蛋糕什么网站南京seo全网营销