UNPKG

vue-cesium

Version:
1 lines 8.59 kB
{"version":3,"file":"util.mjs","sources":["../../../../../../packages/components/controls/selection-indicator/util.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-09-23 13:36:07\n * @LastEditTime: 2022-09-23 14:59:21\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\controls\\selection-indicator\\util.ts\n */\nconst applicableRectangleScratch = undefined\nexport function pickImageryHelper(scene, pickedLocation, pickFeatures, callback) {\n const { defined, Rectangle, Math: CesiumMath } = Cesium\n // Find the terrain tile containing the picked location.\n const tilesToRender = scene.globe._surface._tilesToRender\n let pickedTile\n\n for (let textureIndex = 0; !defined(pickedTile) && textureIndex < tilesToRender.length; ++textureIndex) {\n const tile = tilesToRender[textureIndex]\n if (Rectangle.contains(tile.rectangle, pickedLocation)) {\n pickedTile = tile\n }\n }\n\n if (!defined(pickedTile)) {\n return\n }\n\n // Pick against all attached imagery tiles containing the pickedLocation.\n const imageryTiles = pickedTile.data.imagery\n\n for (let i = imageryTiles.length - 1; i >= 0; --i) {\n const terrainImagery = imageryTiles[i]\n const imagery = terrainImagery.readyImagery\n if (!defined(imagery)) {\n continue\n }\n const provider = imagery.imageryLayer.imageryProvider\n if (pickFeatures && !defined(provider.pickFeatures)) {\n continue\n }\n\n if (!Rectangle.contains(imagery.rectangle, pickedLocation)) {\n continue\n }\n\n // If this imagery came from a parent, it may not be applicable to its entire rectangle.\n // Check the textureCoordinateRectangle.\n const applicableRectangle = applicableRectangleScratch || new Rectangle()\n\n const epsilon = 1 / 1024 // 1/4 of a pixel in a typical 256x256 tile.\n applicableRectangle.west = CesiumMath.lerp(\n pickedTile.rectangle.west,\n pickedTile.rectangle.east,\n terrainImagery.textureCoordinateRectangle.x - epsilon\n )\n applicableRectangle.east = CesiumMath.lerp(\n pickedTile.rectangle.west,\n pickedTile.rectangle.east,\n terrainImagery.textureCoordinateRectangle.z + epsilon\n )\n applicableRectangle.south = CesiumMath.lerp(\n pickedTile.rectangle.south,\n pickedTile.rectangle.north,\n terrainImagery.textureCoordinateRectangle.y - epsilon\n )\n applicableRectangle.north = CesiumMath.lerp(\n pickedTile.rectangle.south,\n pickedTile.rectangle.north,\n terrainImagery.textureCoordinateRectangle.w + epsilon\n )\n if (!Rectangle.contains(applicableRectangle, pickedLocation)) {\n continue\n }\n\n callback(imagery)\n }\n}\n\nexport function pickImageryLayerFeatures(ray, scene, includeImageryIds = [], excludeImageryIds = []) {\n const { defined } = Cesium\n // Find the picked location on the globe.\n const pickedPosition = scene.globe.pick(ray, scene)\n if (!defined(pickedPosition)) {\n return\n }\n\n const pickedLocation = scene.globe.ellipsoid.cartesianToCartographic(pickedPosition)\n\n const promises = []\n const imageryLayers = []\n\n pickImageryHelper(scene, pickedLocation, true, function (imagery) {\n if (excludeImageryIds.indexOf(imagery.imageryLayer.vcId) !== -1) {\n return\n }\n\n if (includeImageryIds.length && includeImageryIds.indexOf(imagery.imageryLayer.vcId) === -1) {\n return\n }\n\n const provider = imagery.imageryLayer.imageryProvider\n const promise = provider.pickFeatures(imagery.x, imagery.y, imagery.level, pickedLocation.longitude, pickedLocation.latitude)\n if (defined(promise)) {\n promises.push(promise)\n imageryLayers.push(imagery.imageryLayer)\n }\n })\n\n if (promises.length === 0) {\n return undefined\n }\n return Promise.all(promises).then(function (results) {\n const features = []\n for (let resultIndex = 0; resultIndex < results.length; ++resultIndex) {\n const result = results[resultIndex]\n const image = imageryLayers[resultIndex]\n if (defined(result) && result.length > 0) {\n for (let featureIndex = 0; featureIndex < result.length; ++featureIndex) {\n const feature = result[featureIndex]\n feature.imageryLayer = image\n // For features without a position, use the picked location.\n if (!defined(feature.position)) {\n feature.position = pickedLocation\n }\n features.push(feature)\n }\n }\n }\n return features\n })\n}\n"],"names":[],"mappings":"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"}