vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 17.7 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-events/index.ts"],"sourcesContent":["import { AnyObject, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { kebabCase, capitalize, isArray } from '@vue-cesium/utils/util'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\n\nexport default function (props, vcInstance: VcComponentInternalInstance, logger) {\n const bindEvents = (cesiumObject: AnyObject, cesiumEvents: Array<string>, register = true) => {\n const ev = cesiumEvents || vcInstance.cesiumEvents || []\n ev &&\n ev.forEach(eventName => {\n if (cesiumObject[eventName]) {\n const listener = getInstanceListener(vcInstance, eventName)\n const methodName = register ? 'addEventListener' : 'removeEventListener'\n listener && cesiumObject[eventName][methodName](listener)\n } else if (process.env.NODE_ENV === 'development') {\n // logger.warn('Add event linstener of ' + eventName + ' failed, try to upgrade Cesium to latest version.')\n }\n })\n }\n const registerEvents = register => {\n const { viewer, cesiumObject } = vcInstance\n if (cesiumObject === undefined || viewer === undefined) {\n return\n }\n const { ScreenSpaceEventHandler, ScreenSpaceEventType } = Cesium\n\n if (!viewer._vcPickScreenSpaceEventHandler || !viewer._vcViewerScreenSpaceEventHandler) {\n viewer._vcPickScreenSpaceEventHandler = new ScreenSpaceEventHandler(viewer.canvas)\n viewer._vcViewerScreenSpaceEventHandler = new ScreenSpaceEventHandler(viewer.canvas)\n viewerScreenSpaceEvents.forEach(type => {\n const listener = getInstanceListener(vcInstance, type)\n listener && viewer._vcViewerScreenSpaceEventHandler.setInputAction(listener, ScreenSpaceEventType[type])\n // vc-viewer 率先绑定\n viewer._vcPickScreenSpaceEventHandler.setInputAction(pickedAction.bind({ eventName: type, viewer }), ScreenSpaceEventType[type])\n })\n }\n\n bindEvents(cesiumObject, vcInstance.cesiumEvents || [], register)\n\n vcInstance.cesiumMembersEvents?.forEach(eventName => {\n const cesiumIntanceMember =\n isArray(eventName.name) && eventName.name.length > 0 && cesiumObject[eventName.name[0]]\n ? cesiumObject[eventName.name[0]][eventName.name[1]]\n : cesiumObject[eventName.name as string]\n cesiumIntanceMember && bindEvents(cesiumIntanceMember, eventName.events, register)\n })\n\n if (props.enableMouseEvent) {\n pickEvents.forEach(eventName => {\n const listener = getInstanceListener(vcInstance, eventName)\n if (register) {\n listener && (cesiumObject[`vc${eventName}`] = listener)\n } else {\n listener && delete cesiumObject[`vc${eventName}`]\n }\n })\n }\n }\n\n function pickedAction(this, movement) {\n if (!props.enableMouseEvent || !movement) {\n return\n }\n const viewer: Cesium.Viewer = this.viewer\n const { eventName } = this\n const position: Cesium.Cartesian2 = movement.position || movement.endPosition\n if (!position) {\n return\n }\n\n const pickedFeatureAndCallbackNames: Array<any> = []\n\n let callbackName\n if (eventName.indexOf('LEFT_DOUBLE_CLICK') !== -1) {\n callbackName = 'dblclick'\n } else if (eventName.indexOf('CLICK') !== -1) {\n callbackName = 'click'\n } else if (eventName.indexOf('DOWN') !== -1) {\n callbackName = 'mousedown'\n } else if (eventName.indexOf('UP') !== -1) {\n callbackName = 'mouseup'\n } else if (eventName.indexOf('MOUSE_MOVE') !== -1) {\n callbackName = 'mousemove'\n }\n\n let callbackNameOut\n if (callbackName === 'mousemove') {\n callbackNameOut = 'mouseout'\n } else if (callbackName === 'click') {\n callbackNameOut = 'clickout'\n }\n\n const pickedFeature = viewer.scene.pick(position)\n if (!Cesium.defined(pickedFeature)) {\n if (this.pickedFeature) {\n // 没有拾取到对象,this.pickedFeature又有记录,说明移出了。\n pickedFeatureAndCallbackNames.push({\n callbackName: callbackNameOut,\n pickedFeature: this.pickedFeature\n })\n }\n\n this.pickedFeature = undefined\n } else {\n if (this.pickedFeature && this.pickedFeature.id !== pickedFeature.id) {\n pickedFeatureAndCallbackNames.push({\n // 拾取到对象,this.pickedFeature也有记录,两者不同,说明操作到另外一个对象上去了\n callbackName: callbackNameOut,\n pickedFeature: this.pickedFeature\n })\n }\n if (callbackName === 'mousemove' && (!this.pickedFeature || this.pickedFeature.id !== pickedFeature.id)) {\n pickedFeatureAndCallbackNames.push({\n callbackName: 'mouseover',\n pickedFeature\n })\n }\n\n pickedFeatureAndCallbackNames.push({\n callbackName,\n pickedFeature\n })\n }\n\n if (pickedFeatureAndCallbackNames.length === 0) {\n return\n }\n\n let intersection: Cesium.Cartesian3 | undefined\n const scene = viewer.scene\n if (scene.mode === Cesium.SceneMode.SCENE3D) {\n const ray = scene.camera.getPickRay(position)\n intersection = scene.globe.pick(ray, scene)\n } else {\n intersection = scene.camera.pickEllipsoid(position, scene.globe.ellipsoid)\n }\n\n let button = -1\n if (eventName.indexOf('LEFT') !== -1) {\n button = 0\n } else if (eventName.indexOf('MIDDLE') !== -1) {\n button = 1\n } else if (eventName.indexOf('RIGHT') !== -1) {\n button = 2\n }\n const eventSourceList: Array<any> = []\n pickedFeatureAndCallbackNames.forEach(item => {\n const callbackName = item.callbackName\n const pickedFeature = item.pickedFeature\n if (pickedFeature.id) {\n if (isArray(pickedFeature.id)) {\n if (pickedFeature.id[0] instanceof Cesium.Entity) {\n // 数据源集合(集群)\n eventSourceList.push({\n callbackName,\n cesiumObject: pickedFeature.id[0].entityCollection.owner,\n pickedFeature\n })\n } else {\n // 图元集群 PrimitiveCluster\n eventSourceList.push({\n callbackName,\n cesiumObject: pickedFeature.primitive.owner,\n pickedFeature\n })\n }\n } else if (pickedFeature.id instanceof Cesium.Entity) {\n // 实体\n eventSourceList.push({\n callbackName,\n cesiumObject: pickedFeature.id,\n pickedFeature\n })\n // 数据源\n eventSourceList.push({\n callbackName,\n cesiumObject: pickedFeature.id.entityCollection.owner,\n pickedFeature\n })\n }\n }\n const getParentCollection = e => {\n eventSourceList.push({\n callbackName,\n cesiumObject: e,\n pickedFeature\n })\n if (e._vcParent) {\n getParentCollection(e._vcParent)\n }\n }\n // 图元\n // + 自定义图元 如 PolygonPrimitive\n if (pickedFeature.primitive) {\n if (pickedFeature.primitive._vcParent) {\n getParentCollection(pickedFeature.primitive._vcParent)\n }\n eventSourceList.push({\n callbackName,\n cesiumObject: pickedFeature.primitive,\n pickedFeature\n })\n }\n\n // 图元集合\n if (pickedFeature.collection) {\n if (pickedFeature.collection._vcParent) {\n getParentCollection(pickedFeature.collection._vcParent)\n }\n\n eventSourceList.push({\n callbackName,\n cesiumObject: pickedFeature.collection,\n pickedFeature\n })\n }\n })\n\n eventSourceList.forEach(event => {\n if (event.callbackName) {\n const fn =\n event.cesiumObject[`vc${event.callbackName}`] ||\n event.cesiumObject[`on${capitalize(event.callbackName)}`] ||\n event.cesiumObject[kebabCase(`on${capitalize(event.callbackName)}`)]\n\n if (Cesium.defined(fn)) {\n const payload = {\n type: `on${event.callbackName}`,\n windowPosition: position,\n surfacePosition: intersection,\n pickedFeature: event.pickedFeature,\n button,\n cesiumObject: event.cesiumObject\n }\n if (fn instanceof Cesium.CallbackProperty) {\n ;(fn as any)._callback(payload)\n } else {\n fn(payload)\n }\n }\n }\n })\n\n this.pickedFeature = pickedFeature\n }\n return {\n bindEvents,\n registerEvents\n }\n}\n\nconst viewerScreenSpaceEvents: Array<string> = [\n 'LEFT_CLICK',\n 'LEFT_DOUBLE_CLICK',\n 'LEFT_DOWN',\n 'LEFT_UP',\n 'MIDDLE_CLICK',\n 'MIDDLE_DOWN',\n 'MIDDLE_UP',\n 'MOUSE_MOVE',\n 'PINCH_END',\n 'PINCH_MOVE',\n 'PINCH_START',\n 'RIGHT_CLICK',\n 'RIGHT_DOWN',\n 'RIGHT_UP',\n 'WHEEL'\n]\n\nconst pickEvents: Array<string> = ['mousedown', 'mouseup', 'click', 'clickout', 'dblclick', 'mousemove', 'mouseover', 'mouseout']\n\nexport { pickEvents, viewerScreenSpaceEvents }\n"],"names":["callbackName","pickedFeature"],"mappings":"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"}