SuperMap iClient 3D for WebGL实现二三维联动

作者:kk


前言

本篇博客介绍的主要内容是如何基于SuperMap iClient 3D for WebGL和SuperMap iClient JavaScript实现二三维联动


一、初始化三维场景和二维地球

三维场景:

var viewer = new Cesium.Viewer('cesiumContainer');

二维地图:

var map = L.map('mapContainer', {
				center: [0, 0],
				maxZoom: 18,
				zoom: 1
			});
			L.supermap.tiledMapLayer(url).addTo(map);

二、将三维场景中相机位置传入二维地图中

					var cameraPosition = camera.position;
					var cartographic = Cesium.Cartographic.fromCartesian(cameraPosition);
					var longitude = Cesium.Math.toDegrees(cartographic.longitude);
					var latitude = Cesium.Math.toDegrees(cartographic.latitude);

					addCentrePoint(longitude, latitude);
					var rectangle = viewer.camera.computeViewRectangle();
					// 弧度转为经纬度,west为左(西)侧边界的经度,以下类推
					var west = (rectangle.west / Math.PI) * 180;
					var north = (rectangle.north / Math.PI) * 180;
					var east = (rectangle.east / Math.PI) * 180;
					var south = (rectangle.south / Math.PI) * 180;

					map.fitBounds([
						[north, east],
						[south, west]
					], false);

三、将二维地图中心点以及范围传入三维场景

					//获取当前地图范围
					var bounds = map.getBounds();
					//根据给定的地图范围计算场景的高度
					var altitude = _calculateAltitudeFromBounds(bounds);
					//获取地图中心点
					var center = map.getCenter();
					addCentrePoint(center.lng, center.lat);
					//设置场景相机
					viewer.scene.camera.setView({
						destination: new Cesium.Cartesian3.fromDegrees(
								center.lng,
								center.lat,
								altitude
						),
					});

四、最终效果

在这里插入图片描述

完整代码下载地址:
链接:https://pan.baidu.com/s/1Ie96y0y_Aoiy_vyaBxfTwg?pwd=2zla
提取码:2zla
–来自百度网盘超级会员V5的分享


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值