|
@@ -1,145 +1,50 @@
|
|
<template>
|
|
<template>
|
|
- <!-- <div class='Map' @click="cutVr('fd720_WoDGV0K2r',13)"> -->
|
|
|
|
- <div class="Map">
|
|
|
|
- <div id="mars3dContainer" class="mars3d-container"></div>
|
|
|
|
|
|
+ <div class='Map'>
|
|
|
|
+ <img src="../../../assets/img/homeImg/bac.jpg" alt="">
|
|
|
|
+ <div @click="cutVr(item.bs,item.ind)" :class="`row row${item.id}`" v-for="item in data" :key="item.id">
|
|
|
|
+ <!-- <img :src="require(`@/assets/img/homeImg/bs2.png`)" alt=""> -->
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
-//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
|
|
|
|
-//例如:import 《组件名称》 from '《组件路径》';
|
|
|
|
-//引入cesium基础库
|
|
|
|
-// import "mars3d-cesium/Build/Cesium/Widgets/widgets.css";
|
|
|
|
-// import * as Cesium from "mars3d-cesium";
|
|
|
|
-
|
|
|
|
-//导入mars3d主库
|
|
|
|
-import "mars3d/dist/mars3d.css";
|
|
|
|
-import * as mars3d from "mars3d";
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
- //import引入的组件需要注入到对象中才能使用
|
|
|
|
|
|
+ name: 'Map',
|
|
components: {},
|
|
components: {},
|
|
data() {
|
|
data() {
|
|
- //这里存放数据
|
|
|
|
return {
|
|
return {
|
|
- // 地图实例
|
|
|
|
- // map: null,
|
|
|
|
|
|
+ data: [
|
|
|
|
+ { id: 1, bs: 'fd720_kiQMdR2cy', ind: 10, name: '雨花台烈士纪念碑' },
|
|
|
|
+ { id: 2, bs: 'fd720_pUvbPNVeK', ind: 5, name: '知名烈士墓' },
|
|
|
|
+ { id: 3, bs: 'fd720_WoDGV0K2r', ind: 13, name: '雨花台烈士纪念馆' },
|
|
|
|
+ { id: 4, bs: 'fd720_e0YmU728Q', ind: 3, name: '红领巾广场' },
|
|
|
|
+ { id: 5, bs: 'fd720_FM3XwZXQP', ind: 4, name: '丁香园' },
|
|
|
|
+ { id: 6, bs: 'fd720_BsmJ0EfoL', ind: 14, name: '忠魂亭' },
|
|
|
|
+ ]
|
|
};
|
|
};
|
|
},
|
|
},
|
|
- //监听属性 类似于data概念
|
|
|
|
computed: {},
|
|
computed: {},
|
|
- //监控data中的数据变化
|
|
|
|
watch: {},
|
|
watch: {},
|
|
- //方法集合
|
|
|
|
methods: {
|
|
methods: {
|
|
- // 初始化地图
|
|
|
|
- async initMap() {
|
|
|
|
- // 读取 config.json 配置文件
|
|
|
|
- const json = await mars3d.Util.fetchJson({ url: "config/config.json" });
|
|
|
|
- console.log("读取 config.json 配置文件完成", json); // 打印测试信息
|
|
|
|
- // 创建三维地球场景
|
|
|
|
- const mapOptions = json.map3d;
|
|
|
|
- let map = new mars3d.Map("mars3dContainer", mapOptions);
|
|
|
|
- // 打印测试信息
|
|
|
|
- // console.log("mars3d的Map主对象构造完成", this.map);
|
|
|
|
- // console.log("其中Cesium原生的Cesium.Viewer为", this.map.viewer);
|
|
|
|
- return map;
|
|
|
|
- },
|
|
|
|
- // 倾斜模型加载
|
|
|
|
- loadModel(_map) {
|
|
|
|
- const modelLayer = new mars3d.layer.TilesetLayer({
|
|
|
|
- name: "雨花台模型",
|
|
|
|
- url: "https://testgis.4dage.com/yuhuatai1021-qp/tileset.json",
|
|
|
|
- maximumMemoryUsage: 512,
|
|
|
|
- position: { alt: -290 },
|
|
|
|
- preloadFlightDestinations: true,
|
|
|
|
- flyTo: false,
|
|
|
|
- });
|
|
|
|
- _map.addLayer(modelLayer);
|
|
|
|
- },
|
|
|
|
- drawLabel(_layer) {
|
|
|
|
- const graphic = new mars3d.graphic.DivGraphic({
|
|
|
|
- position: [118.775298, 31.999126, 80.5],
|
|
|
|
- style: {
|
|
|
|
- html: `<div
|
|
|
|
- style="
|
|
|
|
- width: 316px;
|
|
|
|
- height: 174px;
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: center;
|
|
|
|
- align-items: flex-start;
|
|
|
|
- cursor:pointer;
|
|
|
|
- "
|
|
|
|
- >
|
|
|
|
- <div
|
|
|
|
- style="
|
|
|
|
- position: absolute;
|
|
|
|
- margin-left: 25px;
|
|
|
|
- width: 190px;
|
|
|
|
- height: 70px;
|
|
|
|
- line-height: 70px;
|
|
|
|
- text-align: center;
|
|
|
|
- color: #fff;
|
|
|
|
- font-size: 20px;
|
|
|
|
- font-weight: bold;
|
|
|
|
- "
|
|
|
|
- >
|
|
|
|
- 雨花台烈士纪念馆
|
|
|
|
- </div>
|
|
|
|
- <div><img src="/YHT/Qjkk/MapBs.png"/></div>
|
|
|
|
- </div>`,
|
|
|
|
- horizontalOrigin: mars3d.Cesium.HorizontalOrigin.CENTER,
|
|
|
|
- verticalOrigin: mars3d.Cesium.VerticalOrigin.BOTTOM,
|
|
|
|
- // distanceDisplayCondition: new mars3d.Cesium.DistanceDisplayCondition(0, 30000), // 按视距距离显示
|
|
|
|
- // scaleByDistance: new mars3d.Cesium.NearFarScalar(100, 1, 1000, 0.5),
|
|
|
|
- scale: 0.1,
|
|
|
|
- clampToGround: false,
|
|
|
|
- },
|
|
|
|
- });
|
|
|
|
- graphic.on(mars3d.EventType.click, () => {
|
|
|
|
- this.cutVr("fd720_WoDGV0K2r", 13);
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- _layer.addGraphic(graphic);
|
|
|
|
- },
|
|
|
|
cutVr(code, index) {
|
|
cutVr(code, index) {
|
|
this.$emit("mapCutVr", code, index);
|
|
this.$emit("mapCutVr", code, index);
|
|
},
|
|
},
|
|
},
|
|
},
|
|
- //生命周期 - 创建完成(可以访问当前this实例)
|
|
|
|
- created() {},
|
|
|
|
- //生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
|
|
|
+ created() {
|
|
|
|
+
|
|
|
|
+ },
|
|
mounted() {
|
|
mounted() {
|
|
- // 初始化地图实例
|
|
|
|
- this.initMap().then(
|
|
|
|
- (map) => {
|
|
|
|
- // 加载模型
|
|
|
|
- this.loadModel(map);
|
|
|
|
- // 加载标签
|
|
|
|
- let graphicLayer = new mars3d.layer.GraphicLayer();
|
|
|
|
- map.addLayer(graphicLayer);
|
|
|
|
- this.drawLabel(graphicLayer);
|
|
|
|
- map.setCameraView({
|
|
|
|
- lat: 31.99314,
|
|
|
|
- lng: 118.776577,
|
|
|
|
- alt: 656,
|
|
|
|
- heading: 350,
|
|
|
|
- pitch: -43,
|
|
|
|
- });
|
|
|
|
- },
|
|
|
|
- (error) => {
|
|
|
|
- console.log("地图初始化失败", error);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
|
|
+
|
|
},
|
|
},
|
|
- beforeCreate() {}, //生命周期 - 创建之前
|
|
|
|
- beforeMount() {}, //生命周期 - 挂载之前
|
|
|
|
- beforeUpdate() {}, //生命周期 - 更新之前
|
|
|
|
- updated() {}, //生命周期 - 更新之后
|
|
|
|
- beforeDestroy() {}, //生命周期 - 销毁之前
|
|
|
|
- destroyed() {}, //生命周期 - 销毁完成
|
|
|
|
- activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
|
|
|
|
-};
|
|
|
|
|
|
+ beforeCreate() { }, //生命周期 - 创建之前
|
|
|
|
+ beforeMount() { }, //生命周期 - 挂载之前
|
|
|
|
+ beforeUpdate() { }, //生命周期 - 更新之前
|
|
|
|
+ updated() { }, //生命周期 - 更新之后
|
|
|
|
+ beforeDestroy() { }, //生命周期 - 销毁之前
|
|
|
|
+ destroyed() { }, //生命周期 - 销毁完成
|
|
|
|
+ activated() { }, //如果页面有keep-alive缓存功能,这个函数会触发
|
|
|
|
+}
|
|
</script>
|
|
</script>
|
|
<style lang='less' scoped>
|
|
<style lang='less' scoped>
|
|
.Map {
|
|
.Map {
|
|
@@ -149,19 +54,56 @@ export default {
|
|
z-index: 98;
|
|
z-index: 98;
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 100%;
|
|
height: 100%;
|
|
- // background-color: aqua;
|
|
|
|
-}
|
|
|
|
|
|
|
|
-#mars3dContainer {
|
|
|
|
- width: 100%;
|
|
|
|
- height: 100%;
|
|
|
|
- position: absolute;
|
|
|
|
- top: 0px;
|
|
|
|
- left: 0px;
|
|
|
|
-}
|
|
|
|
|
|
+ &>img {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+ pointer-events: none;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .row {
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ position: absolute;
|
|
|
|
+ width: 14%;
|
|
|
|
+ height: 12%;
|
|
|
|
+ top: 10%;
|
|
|
|
+ left: 23.5%;
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
+ background-image: url('../../../assets/img/homeImg/bs2.png');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .row2 {
|
|
|
|
+ top: 27%;
|
|
|
|
+ left: 54%;
|
|
|
|
+ background-image: url('../../../assets/img/homeImg/bs5.png');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .row3 {
|
|
|
|
+ top: 45%;
|
|
|
|
+ left: 47%;
|
|
|
|
+ background-image: url('../../../assets/img/homeImg/bs1.png');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .row4 {
|
|
|
|
+ top: 32%;
|
|
|
|
+ left: 3%;
|
|
|
|
+ background-image: url('../../../assets/img/homeImg/bs3.png');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .row5 {
|
|
|
|
+ top: auto;
|
|
|
|
+ left: auto;
|
|
|
|
+ right: 23.5%;
|
|
|
|
+ bottom: 29%;
|
|
|
|
+ background-image: url('../../../assets/img/homeImg/bs4.png');
|
|
|
|
+ }
|
|
|
|
|
|
-/deep/.mars3d-locationbar {
|
|
|
|
- background-color: #000 !important;
|
|
|
|
- z-index: 0 !important;
|
|
|
|
|
|
+ .row6 {
|
|
|
|
+ top: auto;
|
|
|
|
+ left: auto;
|
|
|
|
+ right: 25.5%;
|
|
|
|
+ bottom: 16%;
|
|
|
|
+ background-image: url('../../../assets/img/homeImg/bs6.png');
|
|
|
|
+ }
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|