cesium/Specs/e2e/picking.spec.js

61 lines
1.8 KiB
JavaScript

import { test, expect } from "./test.js";
test("Shows cartographic position on mouse over", async ({ cesiumPage }) => {
await cesiumPage.goto();
await cesiumPage.page.evaluate(() => {
const viewer = new Cesium.Viewer("cesiumContainer", {
selectionIndicator: false,
infoBox: false,
});
const scene = viewer.scene;
const entity = viewer.entities.add({
label: {
show: false,
showBackground: true,
font: "14px monospace",
horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
verticalOrigin: Cesium.VerticalOrigin.TOP,
pixelOffset: new Cesium.Cartesian2(15, 0),
},
});
const handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(function (movement) {
const cartesian = viewer.camera.pickEllipsoid(
movement.endPosition,
scene.globe.ellipsoid,
);
if (cartesian) {
const cartographic = Cesium.Cartographic.fromCartesian(cartesian);
const longitudeString = Cesium.Math.toDegrees(
cartographic.longitude,
).toFixed(2);
const latitudeString = Cesium.Math.toDegrees(
cartographic.latitude,
).toFixed(2);
entity.position = cartesian;
entity.label.show = true;
entity.label.text =
`Lon: ${` ${longitudeString}`.slice(-7)}\u00B0` +
`\nLat: ${` ${latitudeString}`.slice(-7)}\u00B0`;
} else {
entity.label.show = false;
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
});
await cesiumPage.page.clock.runFor(1000);
await cesiumPage.page.waitForLoadState("networkidle");
const { width, height } = cesiumPage.page.viewportSize();
await cesiumPage.page.mouse.move(width / 2, height / 2);
await cesiumPage.page.clock.runFor(1000);
await expect(cesiumPage.page).toHaveScreenshot();
});