|
@@ -1,10 +1,16 @@
|
|
|
<template>
|
|
|
- <div id="skysceneryContainer"></div>
|
|
|
+ <div id="skysceneryContainer">
|
|
|
+ <Popup />
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import Popup from "@/components/Popup.vue";
|
|
|
export default {
|
|
|
name: "Map",
|
|
|
+ components: {
|
|
|
+ Popup
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
// viewer3DTiles实例《systemConfig.data3DTiles keys,tile》
|
|
@@ -156,105 +162,44 @@ export default {
|
|
|
});
|
|
|
|
|
|
this.$store.commit("createdMap", true);
|
|
|
+
|
|
|
+ // 绑定点击事件
|
|
|
+ let handler = new SkyScenery.ScreenSpaceEventHandler(viewer.canvas);
|
|
|
+ handler.setInputAction(function(movement) {
|
|
|
+ var pick = viewer.scene.pick(movement.position); // 拾取鼠标所在的entity
|
|
|
+ if (SkyScenery.defined(pick)) {
|
|
|
+ let entity = pick.id;
|
|
|
+ if (!entity) return;
|
|
|
+ if (
|
|
|
+ entity.type &&
|
|
|
+ (entity.type == "layers" || entity.type == "edge")
|
|
|
+ ) {
|
|
|
+ let cartesian = viewer.camera.pickEllipsoid(
|
|
|
+ movement.position,
|
|
|
+ viewer.scene.globe.ellipsoid
|
|
|
+ );
|
|
|
+ // 空间坐标转世界坐标(弧度)
|
|
|
+ if (!cartesian) return;
|
|
|
+ let cartographic = SkyScenery.Cartographic.fromCartesian(
|
|
|
+ cartesian
|
|
|
+ );
|
|
|
+ if (!cartographic) return;
|
|
|
+ // 弧度转为角度(经纬度)
|
|
|
+ let lon = SkyScenery.Math.toDegrees(cartographic.longitude); // 经度值
|
|
|
+ let lat = SkyScenery.Math.toDegrees(cartographic.latitude); // 纬度值
|
|
|
+ let showEntity = SkyScenery.Cartesian3.fromDegrees(lon, lat);
|
|
|
+ showEntity.data = entity.properties.getValue();
|
|
|
+ that.$store.state.showEntity = showEntity;
|
|
|
+ } else {
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ that.$store.state.showEntity = null;
|
|
|
+ }
|
|
|
+ }, SkyScenery.ScreenSpaceEventType.LEFT_CLICK);
|
|
|
+
|
|
|
return;
|
|
|
}, 0);
|
|
|
- // viewer.entities.add({
|
|
|
- // name: "点",
|
|
|
- // position: SkyScenery.Cartesian3.fromDegrees(121.1, 31), //经纬度转世界坐标
|
|
|
- // point: {
|
|
|
- // show: true,
|
|
|
- // color: SkyScenery.Color.GREEN,
|
|
|
- // pixelSize: 20,
|
|
|
- // outlineColor: SkyScenery.Color.YELLOW,
|
|
|
- // outlineWidth: 3,
|
|
|
- // },
|
|
|
- // label: {
|
|
|
- // text: "这里是标签", //设置文字内容
|
|
|
- // font: "normal 18px 楷体", //设置文字大小和字体
|
|
|
- // fillColor: SkyScenery.Color.fromCssColorString("#00ff00"), //设置文字填充的颜色
|
|
|
- // horizontalOrigin: SkyScenery.HorizontalOrigin.CENTER,
|
|
|
- // verticalOrigin: SkyScenery.VerticalOrigin.BOTTOM,
|
|
|
- // pixelOffset: new SkyScenery.Cartesian2(0, -20),
|
|
|
- // },
|
|
|
- // });
|
|
|
- // viewer.entities.add({
|
|
|
- // position: SkyScenery.Cartesian3.fromDegrees(121.2, 31),
|
|
|
- // billboard: {
|
|
|
- // image: "/static/image/point.png",
|
|
|
- // width: 48, // default: undefined
|
|
|
- // height: 48, // default: undefined
|
|
|
- // scale: 1.0, // default: 1.0
|
|
|
- // show: true, // default
|
|
|
- // horizontalOrigin: SkyScenery.HorizontalOrigin.CENTER, // default
|
|
|
- // verticalOrigin: SkyScenery.VerticalOrigin.BOTTOM, // default: CENTER
|
|
|
- // },
|
|
|
- // label: {
|
|
|
- // text: "这是自定义图片", // 设置文字内容
|
|
|
- // font: "normal 18px 楷体", // 设置文字大小和字体
|
|
|
- // fillColor: SkyScenery.Color.fromCssColorString("#00ff00"), //设置文字填充的颜色
|
|
|
- // horizontalOrigin: SkyScenery.HorizontalOrigin.CENTER,
|
|
|
- // verticalOrigin: SkyScenery.VerticalOrigin.BOTTOM,
|
|
|
- // pixelOffset: new SkyScenery.Cartesian2(0, -50),
|
|
|
- // },
|
|
|
- // });
|
|
|
- // let positions = [
|
|
|
- // [121.04829640102727, 31.12735759260756],
|
|
|
- // [121.05219953077487, 31.126058264888133],
|
|
|
- // [121.0556573133586, 31.125143117515066],
|
|
|
- // [121.0585577885634, 31.12489903339664],
|
|
|
- // [121.05855842602281, 31.117437091290032],
|
|
|
- // [121.05755469646111, 31.116865171387122],
|
|
|
- // [121.05855867110577, 31.114567660254956],
|
|
|
- // [121.05716503781966, 31.111412856109656],
|
|
|
- // [121.05169919616742, 31.109414349328368],
|
|
|
- // [121.04846566530048, 31.10731617798831],
|
|
|
- // [121.04523257218045, 31.105074455848328],
|
|
|
- // [121.04372646220537, 31.108713847196935],
|
|
|
- // [121.04238895034425, 31.11239990163383],
|
|
|
- // [121.04216536839769, 31.11503097997496],
|
|
|
- // [121.03965751482633, 31.117141773623022],
|
|
|
- // [121.0392664980893, 31.119247569299414],
|
|
|
- // [121.0401584271992, 31.124267692010815],
|
|
|
- // [121.04534263782213, 31.124207732078528],
|
|
|
- // [121.04813004860797, 31.124919266167907],
|
|
|
- // [121.04829640102727, 31.12735759260756],
|
|
|
- // ];
|
|
|
- // viewer.entities.add({
|
|
|
- // name: "立体墙效果",
|
|
|
- // wall: {
|
|
|
- // positions: positions.map(function (item) {
|
|
|
- // return SkyScenery.Cartesian3.fromDegrees(item[0], item[1]);
|
|
|
- // }),
|
|
|
- // // 设置高度
|
|
|
- // maximumHeights: new Array(positions.length).fill(100),
|
|
|
- // minimumHeights: new Array(positions.length).fill(0),
|
|
|
- // material: new SkyScenery.DynamicWallMaterialProperty({
|
|
|
- // color: SkyScenery.Color.fromCssColorString("#00c4ff80"),
|
|
|
- // trailImage: "/static/image/color.png",
|
|
|
- // duration: 3000,
|
|
|
- // }),
|
|
|
- // },
|
|
|
- // });
|
|
|
- // viewer.entities.add({
|
|
|
- // name: " 面",
|
|
|
- // polygon: {
|
|
|
- // hierarchy: {
|
|
|
- // positions: SkyScenery.Cartesian3.fromDegreesArray(
|
|
|
- // positions
|
|
|
- // .join(",")
|
|
|
- // .split(",")
|
|
|
- // .map(function (num) {
|
|
|
- // return Number(num);
|
|
|
- // })
|
|
|
- // ),
|
|
|
- // },
|
|
|
- // material: new SkyScenery.ImageMaterialProperty({
|
|
|
- // image: "/static/image/b2.png", // 图片路径
|
|
|
- // transparent: true, // 是否透明
|
|
|
- // }),
|
|
|
- // },
|
|
|
- // });
|
|
|
- } catch (error) {
|
|
|
+ } catch (error) {
|
|
|
console.log("createMap error:", error);
|
|
|
window.location.reload();
|
|
|
}
|