cesium左键事件取值

发布时间 2023-07-17 09:35:17作者: 古墩古墩

import { ScreenSpaceEventHandler, ScreenSpaceEventType,  Math as cMath, ShadowMode, Color, Cartographic, Cartesian2, Cartesian3, defined } from 'cesium';

function
bindMapClickEvent() { if (!handler) { handler = new ScreenSpaceEventHandler(viewer.cesium.scene.canvas); } handler.setInputAction((event) => { // console.log('鼠标点击事件', event.position) // 获取移动点位置 const [longitude, latitude]: any = c3toCoordinates( c2toC3(event.position, viewer.cesium), viewer.cesium ); console.log("Clicked at: " + longitude + ", " + latitude); const params = { latLon: { lat: latitude, lon: longitude }}; PanelRender.show(params); emitter.emit('switchElementTimingPoint', params); }, ScreenSpaceEventType.LEFT_CLICK); } function c3toCoordinates( c3: Cartesian3, viewer: any ): [number, number, number] | null { if (!defined(c3)) { return null; } const { ellipsoid } = viewer.scene.globe; const cartographic = ellipsoid.cartesianToCartographic(c3); return [ cMath.toDegrees(cartographic.longitude), cMath.toDegrees(cartographic.latitude), cartographic.height, ]; } function c2toC3(c2: Cartesian2, viewer: any): Cartesian3 { const pickRay = viewer.camera.getPickRay(c2); return <Cartesian3>viewer.scene.globe.pick(pickRay, viewer.scene); }