function activate_streetViewMode() {
/*功能:激活“街景模式”。*/
let wheelingPosition = {};
// 给$(".cesium-viewer")元素添加 mousemove 事件。
$(".cesium-viewer").on("mousemove", function (event) {
/*功能:获取鼠标的实时位置。*/
wheelingPosition.x = event.clientX;
wheelingPosition.y = event.clientY;
// console.log("wheelingPosition:", wheelingPosition);
// wheelingPosition: {x: 139, y: 312}
});
function changeViewerHeightDynamic() {
/*功能:由于视图中的视高,实时性较差,在此功能中,稍加改善。*/
// let viewHeight = $("#location_mars_jwd").children("div:first")[0];
console.log("viewer.camera.positionCartographic.height:", viewer.camera.positionCartographic.height);
let html = '视高:' + viewer.camera.positionCartographic.height.toFixed(1) + '米';
let viewHeight = $("#location_mars_jwd").children("div:first").html(html);
// console.log("viewHeight:", viewHeight[0]);
}
handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function (e) {
/*功能:当三维视图的高度小于某个高度时,激活“街景模式”。*/
setTimeout(changeViewerHeightDynamic, 100);
if (viewer.camera.positionCartographic.height < displayBaiduMapPanoramaHeight) {
// 获取鼠标位置(笛卡尔坐标系,即,地球直角坐标系)。
let Cartesian3_CurrentMousePosition = mars3d.point.getCurrentMousePosition(viewer.scene, wheelingPosition);
// console.log("Cartesian3_CurrentMousePosition:", Cartesian3_CurrentMousePosition);
// Cartesian3_CurrentMousePosition: a {x: -2308816.906348081, y: 4393127.8631515205, z: 3992865.6356029827}
if (Cartesian3_CurrentMousePosition) {
// 转换成弧度 + 高度。
let Cartographic_CurrentMousePosition = Cesium.Cartographic.fromCartesian(Cartesian3_CurrentMousePosition);
// 转换成经纬度。
let longitude = Number(Cesium.Math.toDegrees(Cartographic_CurrentMousePosition.longitude).toFixed(6));
let latitude = Number(Cesium.Math.toDegrees(Cartographic_CurrentMousePosition.latitude).toFixed(6));
let e = setInterval(function () {
/*功能:等待 BMap 成为window的属性,清除定时器,添加街景视图。*/
null != window.BMap && (clearInterval(e), addSecondMap({x: longitude, y: latitude}))
}, 50
);
}
}
}, Cesium.ScreenSpaceEventType.WHEEL
);
}
// 移除视图的 mousemove 事件。
$(".cesium-viewer").off("mousemove");
handler && (handler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL), handler.destroy(), handler = null);
cesium 设置鼠标事件 - 屏幕坐标到图上坐标 screenPointToMap.js
最新推荐文章于 2024-02-27 13:53:07 发布