|
|
@@ -13,8 +13,8 @@
|
|
|
<span>江湖风味游</span>
|
|
|
</div>
|
|
|
<div class="time">
|
|
|
- <span class="num">7个景点</span>
|
|
|
- <span>预计用时:10小时</span>
|
|
|
+ <span class="num">{{ lineData.length }}个景点</span>
|
|
|
+ <span>预计用时:{{ Math.round(overTime / 3600) }}小时</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="bottom">
|
|
|
@@ -37,8 +37,28 @@ import AMapLoader from "@amap/amap-jsapi-loader";
|
|
|
import jsonp from "jsonp";
|
|
|
import Header from "@/components/header/index.vue";
|
|
|
import { mapData } from "../map/data.js";
|
|
|
+import { trvelLine } from "./data.js";
|
|
|
+import { useRoute } from "vue-router";
|
|
|
+
|
|
|
import Dialog from "../map/dialog.vue";
|
|
|
+import tagIcon1 from "@/assets/images/tag-1.png";
|
|
|
+import tagIcon2 from "@/assets/images/tag-2.png";
|
|
|
+import tagIcon3 from "@/assets/images/tag-3.png";
|
|
|
+import tagIcon4 from "@/assets/images/tag-4.png";
|
|
|
+import tagIcon5 from "@/assets/images/tag-5.png";
|
|
|
+import tagIcon6 from "@/assets/images/tag-6.png";
|
|
|
import tagIcon from "@/assets/images/tagIcon.png";
|
|
|
+import router from "@/router/index.js";
|
|
|
+const route = useRoute();
|
|
|
+const lineId = ref(route.params.id || 1);
|
|
|
+let iconList = {
|
|
|
+ tagIcon1,
|
|
|
+ tagIcon2,
|
|
|
+ tagIcon3,
|
|
|
+ tagIcon4,
|
|
|
+ tagIcon5,
|
|
|
+ tagIcon6,
|
|
|
+};
|
|
|
let AMap = null;
|
|
|
let map = null;
|
|
|
let imageLayer = null;
|
|
|
@@ -50,32 +70,9 @@ const vrLink = ref(null);
|
|
|
const goVr = () => {
|
|
|
vrLink.value = props.dialogData.vrLink;
|
|
|
};
|
|
|
+const trvelList = ref(trvelLine);
|
|
|
+const overTime = ref(3600);
|
|
|
|
|
|
-const test = (data) => {
|
|
|
- let zoom = map.getZoom();
|
|
|
- let item = markers.find((i) => i.getExtData().id == data.id);
|
|
|
- // let data = item.getExtData();
|
|
|
- infoWindow = new AMap.InfoWindow({
|
|
|
- content: getHtml(data), // 设置弹窗内容为自定义的HTML元素
|
|
|
- offset: new AMap.Pixel(0, -30), // 设置弹窗偏移量,可根据需要调整
|
|
|
- });
|
|
|
-
|
|
|
- // infoWindow.open(map, e.target.getPosition());
|
|
|
- infoWindow.open(map, item.getPosition());
|
|
|
-
|
|
|
- let center = data.location.split(",");
|
|
|
- map.setZoomAndCenter(zoom, center, false, 300);
|
|
|
- setTimeout(() => {
|
|
|
- setTimeout(() => {
|
|
|
- const button = document.getElementById("detailsBtn");
|
|
|
- button.addEventListener("click", openDetails);
|
|
|
- const vrBtn = document.getElementById("vrBtn");
|
|
|
- vrBtn.addEventListener("click", openVrLink);
|
|
|
- const closeBtn = document.getElementById("closeBtn");
|
|
|
- closeBtn.addEventListener("click", closeTag);
|
|
|
- }, 100);
|
|
|
- }, 100);
|
|
|
-};
|
|
|
const getHtml = (data) => {
|
|
|
activeTagData.value = data;
|
|
|
let html = `<div class="map-window">
|
|
|
@@ -96,7 +93,6 @@ const openDetails = (data) => {
|
|
|
dialogData.value = activeTagData.value;
|
|
|
};
|
|
|
const openVrLink = () => {
|
|
|
- console.error(activeTagData.value);
|
|
|
// vrLink.value = activeTagData.value.vrLink;
|
|
|
vrLink.value = 'https://www.4dkankan.com/panorama/show.html?id=WK1916704161229172736&lang=zh&rnd=0.7835560589743076"';
|
|
|
if (activeTagData.value.vrLink) {
|
|
|
@@ -114,7 +110,6 @@ const hanlderMakerEvent = (e) => {
|
|
|
let data = e.target.getExtData();
|
|
|
// dialogData.value = data;
|
|
|
|
|
|
- console.error(e);
|
|
|
|
|
|
infoWindow = new AMap.InfoWindow({
|
|
|
content: getHtml(data), // 设置弹窗内容为自定义的HTML元素
|
|
|
@@ -123,30 +118,65 @@ const hanlderMakerEvent = (e) => {
|
|
|
infoWindow.open(map, e.target.getPosition());
|
|
|
setTimeout(() => {
|
|
|
const button = document.getElementById("detailsBtn");
|
|
|
- button.addEventListener("click", openDetails);
|
|
|
const vrBtn = document.getElementById("vrBtn");
|
|
|
- vrBtn.addEventListener("click", openVrLink);
|
|
|
const closeBtn = document.getElementById("closeBtn");
|
|
|
+
|
|
|
+ button.addEventListener("click", openDetails);
|
|
|
+ vrBtn.addEventListener("click", openVrLink);
|
|
|
closeBtn.addEventListener("click", closeTag);
|
|
|
+ button.addEventListener("touchstart", openDetails);
|
|
|
+ vrBtn.addEventListener("touchstart", openVrLink);
|
|
|
+ closeBtn.addEventListener("touchstart", closeTag);
|
|
|
}, 100);
|
|
|
};
|
|
|
let markers = [];
|
|
|
const lineData = ref([]);
|
|
|
-const gotoItem = (item) => {
|
|
|
- // let marker = markers.find((i) => i.getExtData().id == item.id);
|
|
|
- // let data = marker.getExtData();
|
|
|
- // dialogData.value = data;
|
|
|
- test(item);
|
|
|
+const gotoItem = (data) => {
|
|
|
+ let zoom = map.getZoom();
|
|
|
+ let item = markers.find((i) => i.getExtData().id == data.id);
|
|
|
+ // let data = item.getExtData();
|
|
|
+ infoWindow = new AMap.InfoWindow({
|
|
|
+ content: getHtml(data), // 设置弹窗内容为自定义的HTML元素
|
|
|
+ offset: new AMap.Pixel(0, -30), // 设置弹窗偏移量,可根据需要调整
|
|
|
+ });
|
|
|
+
|
|
|
+ // infoWindow.open(map, e.target.getPosition());
|
|
|
+ infoWindow.open(map, item.getPosition());
|
|
|
+
|
|
|
+ let center = data.location.split(",");
|
|
|
+ map.setZoomAndCenter(zoom, center, false, 300);
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeout(() => {
|
|
|
+ const button = document.getElementById("detailsBtn");
|
|
|
+ const vrBtn = document.getElementById("vrBtn");
|
|
|
+ const closeBtn = document.getElementById("closeBtn");
|
|
|
+
|
|
|
+ button.addEventListener("click", openDetails);
|
|
|
+ vrBtn.addEventListener("click", openVrLink);
|
|
|
+ closeBtn.addEventListener("click", closeTag);
|
|
|
+
|
|
|
+ button.addEventListener("touchstart", openDetails);
|
|
|
+ vrBtn.addEventListener("touchstart", openVrLink);
|
|
|
+ closeBtn.addEventListener("touchstart", closeTag);
|
|
|
+ }, 100);
|
|
|
+ }, 100);
|
|
|
};
|
|
|
const setMarker = () => {
|
|
|
- let data = mapData.filter((item) => item.type == 4);
|
|
|
- lineData.value = data;
|
|
|
+ let data = trvelList.value.find((item) => item.id == lineId.value);
|
|
|
+
|
|
|
+ data.list.forEach((item) => {
|
|
|
+ let info = mapData.find((mapItem) => item == mapItem.id);
|
|
|
+ lineData.value.push(info);
|
|
|
+ });
|
|
|
+
|
|
|
+ // let data = mapData.filter((item) => item.type == 4);
|
|
|
+ // lineData.value = data;
|
|
|
let scale = 0.2;
|
|
|
const markerContent = `<div class="custom-content-marker">
|
|
|
<div class="title">sdasdas</div>
|
|
|
<div class="icon"></div>
|
|
|
</div>`;
|
|
|
- for (let i = 0; i < data.length; i++) {
|
|
|
+ for (let i = 0; i < lineData.value.length; i++) {
|
|
|
let iconW = 41;
|
|
|
let iconH = 57;
|
|
|
let customIcon = null;
|
|
|
@@ -164,13 +194,14 @@ const setMarker = () => {
|
|
|
offset = new AMap.Pixel(-(iconW / 2), -(iconH / 2));
|
|
|
customIcon = new AMap.Icon({
|
|
|
size: new AMap.Size(iconW, iconH),
|
|
|
- image: tagIcon,
|
|
|
+ // image: eval(`tagIcon${lineData.value[i].type}`),
|
|
|
+ image: iconList[`tagIcon${lineData.value[i].type}`],
|
|
|
imageSize: new AMap.Size(iconW, iconH),
|
|
|
});
|
|
|
// }
|
|
|
|
|
|
- let pos = data[i].location.split(",");
|
|
|
- let extData = data[i];
|
|
|
+ let pos = lineData.value[i].location.split(",");
|
|
|
+ let extData = lineData.value[i];
|
|
|
let marker = new AMap.Marker({
|
|
|
// position: new AMap.LngLat(106.837106, 29.712762),
|
|
|
|
|
|
@@ -187,7 +218,7 @@ const setMarker = () => {
|
|
|
icon: customIcon, //添加 icon 图标 URL
|
|
|
// title: data[i].name,
|
|
|
zooms: [9, 20], // 设置可见级别,[最小级别,最大级别]
|
|
|
- id: `marker_${data[i].id}`,
|
|
|
+ id: `marker_${lineData.value[i].id}`,
|
|
|
extData: {
|
|
|
//自定义数据
|
|
|
...extData,
|
|
|
@@ -206,8 +237,7 @@ const setMarker = () => {
|
|
|
};
|
|
|
|
|
|
const createdLine = () => {
|
|
|
- let data = mapData.filter((item) => item.type == 4);
|
|
|
- console.error(data);
|
|
|
+ let data = lineData.value;
|
|
|
var driving = new AMap.Driving({
|
|
|
//驾车路线规划策略,0是速度优先的策略
|
|
|
policy: AMap.DrivingPolicy.LEAST_TIME,
|
|
|
@@ -232,8 +262,8 @@ const createdLine = () => {
|
|
|
driving.search(startLngLat, endLngLat, opts, function (status, result) {
|
|
|
if (status === "complete") {
|
|
|
if (result.routes && result.routes.length) {
|
|
|
- console.error(result);
|
|
|
drawRoute(result);
|
|
|
+ overTime.value = result.routes[0].time;
|
|
|
// log.success('绘制步行路线完成')
|
|
|
}
|
|
|
} else {
|
|
|
@@ -459,9 +489,7 @@ const initMap = async () => {
|
|
|
// });
|
|
|
// map.add(circle);
|
|
|
// tilerLayer.setMap(map);
|
|
|
- tilerLayer.on("click", () => {
|
|
|
- console.error("click");
|
|
|
- });
|
|
|
+ tilerLayer.on("click", () => {});
|
|
|
map.on("zoomchange", () => {
|
|
|
console.log("当前缩放级别:", map.getZoom());
|
|
|
// if (map.getZoom() < 10 || map.getZoom() > 15) {
|
|
|
@@ -484,7 +512,6 @@ const initMap = async () => {
|
|
|
|
|
|
//触发事件类型
|
|
|
var type = ev.type;
|
|
|
- console.error(pixel);
|
|
|
});
|
|
|
|
|
|
map.add(imageLayer);
|