gemercheung 1 anno fa
parent
commit
304d9d6cc1
3 ha cambiato i file con 72 aggiunte e 43 eliminazioni
  1. 1 1
      src/store/modules/permission.ts
  2. 31 22
      src/views/map/index.vue
  3. 40 20
      src/views/map/share.vue

+ 1 - 1
src/store/modules/permission.ts

@@ -215,7 +215,7 @@ export const usePermissionStore = defineStore({
 
       routes.push(ERROR_LOG_ROUTE);
       patchHomeAffix(routes);
-      console.log('routes', routes);
+      // console.log('routes', routes);
       return routes;
     },
   },

+ 31 - 22
src/views/map/index.vue

@@ -26,7 +26,7 @@
     :loading-tip="t('common.loadingText')"
   >
     <MarkerCluster>
-      <template v-if="form.type === 0">
+      <!-- <template v-if="form.type === 0">
         <CustomMarker
           v-for="(location, i) in locations"
           :key="i"
@@ -50,7 +50,16 @@
           }"
           @click="handleMarkerClick(location)"
         />
-      </template>
+      </template> -->
+      <AdvancedMarker
+        v-for="(location, i) in locations"
+        :key="i"
+        :options="{
+          position: { lat: location.lat, lng: location.lng },
+          title: location.title,
+        }"
+        @click="handleMarkerClick(location)"
+      />
     </MarkerCluster>
 
     <CustomControl position="TOP_LEFT">
@@ -95,7 +104,7 @@
             :params="{ type: 1, searchKey: form.searchValue }"
           />
         </div>
-        <div>
+        <div v-if="!projectId">
           <Select
             ref="select"
             v-model:value="form.type"
@@ -141,7 +150,7 @@
     GoogleMap,
     AdvancedMarker,
     MarkerCluster,
-    CustomMarker,
+    // CustomMarker,
     // InfoWindow,
     CustomControl,
   } from 'vue3-google-map';
@@ -312,22 +321,22 @@
 
     qrCodeShareUrl.value = url;
   };
-  // const getProjectMarkerData = (data) => {
-  //   const list = Array.from(data as any as any[])
-  //     .reduce((p: string[], c: { sceneList: any[] }) => p.concat(c['sceneList']), [])
-  //     .map((item) => {
-  //       const mapper = {} as any;
-  //       mapper.lat = Number(item.lat);
-  //       mapper.lng = Number(item.lon);
-  //       mapper.title = item.title;
-  //       item.num && (mapper.num = item.num);
-  //       item.id && (mapper.id = item.id);
-  //       mapper.webSite = item.webSite;
-  //       return mapper;
-  //     });
-  //   console.log('list', list);
-  //   return list;
-  // };
+  const getProjectMarkerData = (data) => {
+    const list = Array.from(data as any as any[])
+      .reduce((p: string[], c: { sceneList: any[] }) => p.concat(c['sceneList']), [])
+      .map((item) => {
+        const mapper = {} as any;
+        mapper.lat = Number(item.lat);
+        mapper.lng = Number(item.lon);
+        mapper.title = item.title;
+        item.num && (mapper.num = item.num);
+        item.id && (mapper.id = item.id);
+        mapper.webSite = item.webSite;
+        return mapper;
+      });
+    console.log('list', list);
+    return list;
+  };
   const getMarkerData = (data) => {
     return data.map((item) => {
       const mapper = {} as any;
@@ -343,8 +352,8 @@
 
   const projectFetch = async (params) => {
     const res = await AllGpsApi(params);
-    const data = getMarkerData(res);
-    console.log('result', data.length);
+    const data = getProjectMarkerData(res);
+    console.log('项目的marker', data.length);
     locations.value = data;
     return res;
   };

+ 40 - 20
src/views/map/share.vue

@@ -21,7 +21,7 @@
     :loading-tip="t('common.loadingText')"
   >
     <MarkerCluster>
-      <template v-if="form.type === 0">
+      <!-- <template v-if="form.type === 0">
         <CustomMarker
           v-for="(location, i) in locations"
           :key="i"
@@ -45,7 +45,16 @@
           }"
           @click="handleMarkerClick(location)"
         />
-      </template>
+      </template> -->
+      <AdvancedMarker
+        v-for="(location, i) in locations"
+        :key="i"
+        :options="{
+          position: { lat: location.lat, lng: location.lng },
+          title: location.title,
+        }"
+        @click="handleMarkerClick(location)"
+      />
     </MarkerCluster>
 
     <!-- <CustomControl position="TOP_LEFT">
@@ -129,25 +138,19 @@
     GoogleMap,
     AdvancedMarker,
     MarkerCluster,
-    CustomMarker,
+    // CustomMarker,
     // InfoWindow,
     // CustomControl,
   } from 'vue3-google-map';
   import { useRouteQuery } from '@vueuse/router';
-  // import { Select, SelectOption, Popover } from 'ant-design-vue';
-  // import ApiSelect from '/@/components/Form/src/components/ApiSelect.vue';
-  // import { useRouter } from 'vue-router';
+
   const loadingRef = ref(true);
   import { useI18n } from '/@/hooks/web/useI18n';
   import { GetShareMapApi } from '/@/api/mapOpt/list';
-  // import { QrCode } from '/@/components/Qrcode/index';
-  // import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
-  // import { useMessage } from '/@/hooks/web/useMessage';
   const { t } = useI18n();
-  // const router = useRouter();
+
   const googleKey = computed(() => import.meta.env.VITE_GOOGLE_KEY);
   const center = { lat: 35.717, lng: 139.731 };
-  // const { createMessage } = useMessage();
 
   const lang = useRouteQuery('lang', '');
 
@@ -237,20 +240,37 @@
     data.webSite && window.open(data.webSite);
   };
   const getMarkerData = (data) => {
-    return data.map((item) => {
-      const mapper = {} as any;
-      mapper.lat = Number(item.lat);
-      mapper.lng = Number(item.lon);
-      mapper.title = item.title;
-      mapper.webSite = item.webSite;
-      return mapper;
-    });
+    if (Number(type.value) === 0) {
+      const list = Array.from(data as any as any[])
+        .reduce((p: string[], c: { sceneList: any[] }) => p.concat(c['sceneList']), [])
+        .map((item) => {
+          const mapper = {} as any;
+          mapper.lat = Number(item.lat);
+          mapper.lng = Number(item.lon);
+          mapper.title = item.title;
+          item.num && (mapper.num = item.num);
+          item.id && (mapper.id = item.id);
+          mapper.webSite = item.webSite;
+          return mapper;
+        });
+      console.log('getMarkerData-list', list);
+      return list;
+    } else {
+      return data.map((item) => {
+        const mapper = {} as any;
+        mapper.lat = Number(item.lat);
+        mapper.lng = Number(item.lon);
+        mapper.title = item.title;
+        mapper.webSite = item.webSite;
+        return mapper;
+      });
+    }
   };
 
   const sceneFetch = async (params) => {
     const res = await GetShareMapApi(params);
     const data = getMarkerData(res);
-    console.log('result', data.length);
+    console.log('sceneFetch-res', data.length);
     locations.value = data;
     return res;
   };