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

1688网站建设网站接单做项目

1688网站建设,网站接单做项目,网站改版html,汽车类网站作者:Lzzzz 在城市规划,应急救援,旅游规划等项目场景中,普遍存在通过二维地图定位区域或路线,三维场景展示布局细节的情况,那么,如何使三维场景与二维地图联动起来呢,一起来看看如何…

作者:Lzzzz

在城市规划,应急救援,旅游规划等项目场景中,普遍存在通过二维地图定位区域或路线,三维场景展示布局细节的情况,那么,如何使三维场景与二维地图联动起来呢,一起来看看如何实现吧!

最终效果

实现步骤

  • 监听二维地图的平移事件,并更新三维场景的相机位置。
  • 在三维场景移动时,获取相机位置,同时更新二维地图的中心点。

关键代码

定义信号变量

定义信号变量,保证地图联动效果和场景联动效果同一时间只能触发一个  防止循环调用。

        // 监听鼠标进入地图和 SuperMap3D 容器的区域,以确定当前激活的是哪个var activeMap = true;document.getElementById('map').addEventListener('pointerenter', () => {activeMap = true;});// 监听鼠标进入 SuperMap3D 容器的区域,以确定当前激活的是地图还是场景document.getElementById('Container').addEventListener('pointerenter', () => {activeMap = false;});

地图监听

// 监听地图中心变化,并更新 SuperMap3D 的相机位置map.getView().on('change:center', () => {if (activeMap) {const center = map.getView().getCenter();const cartographic = SuperMap3D.Cartographic.fromCartesian(viewer.camera.position);const height = cartographic.height; // 获取高度// 更新 MySuperMap3D 的相机位置const cartesian = SuperMap3D.Cartesian3.fromDegrees(center[0], center[1], height); // 设定一定高度viewer.camera.flyTo({destination: cartesian,duration: 0 // 立即移动});};});

场景监听

        // 监听相机位置变化事件,以更新 OpenLayers 地图的视点viewer.camera.changed.addEventListener(() => {if (activeMap) return;const camera = viewer.camera;// 从相机的世界坐标获取经纬度const cartographic = SuperMap3D.Cartographic.fromCartesian(camera.position);// 获取高度并打印以检查const latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);const longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);// 更新 OpenLayers 地图的视点map.getView().setCenter([longitude, latitude]);});

项目完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"><title>地图场景联动</title><link href="../../Build/SuperMap3D/Widgets/widgets.css" rel="stylesheet"><link href="./css/bootstrap.min.css" rel="stylesheet"><link href="./css/pretty.css" rel="stylesheet"><link href="./css/bootstrap-select.min.css" rel="stylesheet"><script src="./js/jquery.min.js"></script><script src="./js/bootstrap.min.js"></script><script src="./js/bootstrap-select.min.js"></script><script src="./js/config.js"></script><script type="text/javascript" src="../../Build/SuperMap3D/SuperMap3D.js"></script><script type="text/javascript" src="/examples/js/include-web.js"></script><script type="text/javascript" src="/examples/dist/openlayers/include-openlayers.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="map" class="map" style="width:400px;height: 450px; position: absolute;top:580px">
</div><script>function onload(SuperMap3D) {var EngineType = getEngineType();var viewer = new SuperMap3D.Viewer('Container', {contextOptions: {contextType: Number(EngineType), // Webgl2:2 ; WebGPU:3}});viewer.scenePromise.then(function(scene){init(SuperMap3D, scene, viewer);});}function init(SuperMap3D, scene, viewer) {viewer.resolutionScale = window.devicePixelRatio;viewer.imageryLayers.addImageryProvider(new SuperMap3D.TiandituImageryProvider({credit : new SuperMap3D.Credit('天地图全球影像服务     数据来源:国家地理信息公共服务平台 & 四川省测绘地理信息局'),token: URL_CONFIG.TOKEN_TIANDITU}));var imageryLayers = viewer.imageryLayers;//初始化天地图全球中文注记服务,并添加至影像图层var labelImagery = new SuperMap3D.TiandituImageryProvider({mapStyle : SuperMap3D.TiandituMapsStyle.CIA_C, //天地图全球中文注记服务(经纬度投影)token: URL_CONFIG.TOKEN_TIANDITU});imageryLayers.addImageryProvider(labelImagery);var map = new ol.Map({target: 'map',view: new ol.View({center: [0,0],zoom: 1,projection: "EPSG:4326",multiWorld: true}),layers: [new ol.layer.Tile({source: new ol.source.Tianditu({key: "1d109683f4d84198e37a38c442d68311",projection: "EPSG:4326"})}), new ol.layer.Tile({source: new ol.source.Tianditu({key: "1d109683f4d84198e37a38c442d68311",isLabel: true,projection: "EPSG:4326"})})]});// 监听鼠标进入地图和 SuperMap3D 容器的区域,以确定当前激活的是哪个var activeMap = true;document.getElementById('map').addEventListener('pointerenter', () => {activeMap = true;});// 监听鼠标进入 SuperMap3D 容器的区域,以确定当前激活的是地图还是场景document.getElementById('Container').addEventListener('pointerenter', () => {activeMap = false;});// 监听地图中心变化,并更新 SuperMap3D 的相机位置map.getView().on('change:center', () => {if (activeMap) {const center = map.getView().getCenter();const cartographic = SuperMap3D.Cartographic.fromCartesian(viewer.camera.position);const height = cartographic.height; // 获取高度// 更新 MySuperMap3D 的相机位置const cartesian = SuperMap3D.Cartesian3.fromDegrees(center[0], center[1], height); // 设定一定高度viewer.camera.flyTo({destination: cartesian,duration: 0 // 立即移动});};});// 监听相机位置变化事件,以更新 OpenLayers 地图的视点viewer.camera.changed.addEventListener(() => {if (activeMap) return;const camera = viewer.camera;// 从相机的世界坐标获取经纬度const cartographic = SuperMap3D.Cartographic.fromCartesian(camera.position);// 获取高度并打印以检查const latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);const longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);// 更新 OpenLayers 地图的视点map.getView().setCenter([longitude, latitude]);});$('#loadingbar').remove();}if (typeof SuperMap3D !== 'undefined') {window.startupCalled = true;onload(SuperMap3D);}
</script>
</body>
</html>
http://www.dtcms.com/wzjs/583716.html

相关文章:

  • 合肥网站建设首选 晨飞网络做学历的网站
  • 网站建设包含专业seo推广是做什么
  • 校园网站建设报告建设银联官方网站
  • 东莞网站建设qq群许昌seo推广
  • 昆明网站建设服务至上网站策划书的内容
  • 国外访问国内网站慢wordpress图表模板类
  • 西宁网站建设天锐科技广东省住房和城乡建设厅网站首页
  • 织梦做中英文网站步骤注册有限公司的流程和条件
  • 可以注册免费网站天津注册公司优惠政策
  • 深圳网站建设技术提供网站建设价格
  • 个人网站设计作业logo设计 公司 免费
  • 政务公开网站建设wordpress 贴代码
  • 橙色的网站wordpress 菜单 文章
  • 建个公司网站需要多少钱dedecms网站制作教程
  • 什么网站可以做软件有哪些内容wordpress调用文章标签名
  • 泰安网站建设xtempire百度爱采购推广效果怎么样?
  • 宁波网站建设接单推广怎么做
  • 网站空间 支持什么程序能打开任何网站浏览器
  • 大连网站制作报价宝塔无法安装wordpress
  • 东铁匠营网站建设公司建站系统wordpress下载
  • 南京外贸网站建设哪家好淄博网站制作定制推广
  • 广州网站建设信科分公司哈尔滨市建筑信息网
  • 赣州网站建设开发微信小程序短链接生成
  • 电子商务网站建设与维护实验报告wordpress上传html
  • 网站上线前的准备工作深圳画册设计印刷公司
  • 东莞微客巴巴做网站网页游戏网页打不开
  • 网站的最近浏览 怎么做网站建设改版升级
  • 网站页面统计代码是什么淘宝u站怎么做网站的
  • 广州铁路投资建设集团网站360建筑网质量怎么样
  • 赣州网站优化推广怎样优化推广