Cesium DC-SDK解决viewer.flyToPosition俯仰角不是90°不会对准目标点的问题

文章讲述了如何使用CesiumDC-SDK中viewer.flyToPosition方法时,当俯仰角非90°时调整视角对准目标点的技巧,涉及getOffsetLat函数计算纬度偏移以实现精准定位。
摘要由CSDN通过智能技术生成

Cesium DC-SDK解决viewer.flyToPosition俯仰角不是90°不会对准目标点的问题

通过viewer.flyToPosition定位至目标的,如果俯仰角不是90°,不会对准目标点。经过各种查找资料,百度搜了一大堆都没有结果,后来用Google搜索,终于找到解决办法:

参考链接地址:https://www.cnblogs.com/sanhuamao/p/18127858

通过点击定位到目标点(地图中心)

label.on(DC.MouseEventType.CLICK, (e) => {
	const { attr, position } = e.overlay
	const { alt, heading, roll, pitch } = viewer.cameraPosition
	
	const offsetLat = getOffsetLat({
	    lat: position.lat,
	    alt,
	    pitch
	})
	console.log(offsetLat)
	viewer.flyToPosition(DC.Position.fromArray([position.lng, offsetLat, alt,
	    heading, pitch, roll]))
})

转换方法(对纬度进行转换)

const getOffsetLat = (options) => {
	const ONE_LAT_TO_METERS = 111 * 1000 // 1纬度对应的距离 111km
	
	// 如果是90或者0度,不发生偏移
	if (Math.abs(options.pitch % 90) === 0) {
	    return options.lat
	}
	
	// tan用的是弧度,这里要将角度转为弧度
	const latOffsetMeters = options.alt / Math.tan((options.pitch * Math.PI) / 180)
	const lat = Number((latOffsetMeters / ONE_LAT_TO_METERS).toFixed(12))
	return options.lat + lat
	}

该篇文章如果对你有用,点个赞再走呗。
完结,撒花✿✿ヽ(°▽°)ノ✿

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值