yangyin
2024-10-29 a9f50ed255c2dfb359ca02e5ba47ee897650933f
src/model/map/GaoDeMap.ts
@@ -7,7 +7,7 @@
   version?: string;
   plugins?: string[];
   container: string | HTMLDivElement;
   aMapOption?: Partial<AMap.MapOptions>;
   aMapOption?: Partial<AMap.MapOptions> & Record<string, any>;
};
export type GaoDeMarkerOption = {
@@ -15,6 +15,7 @@
      url: string;
      size: number;
   };
   click?: (e: any, labelMarker: AMap.LabelMarker) => void;
};
export type LabelMarkerData = {
   position: GaoDePosition;
@@ -59,11 +60,22 @@
            plugins: gaoDeOption.plugins,
         });
         this.map = new AMap.Map(gaoDeOption.container, gaoDeOption.aMapOption);
         this.setStyle();
      } catch (error) {
         // console.error(error);
      }
   }
   constructor() {}
   private setStyle() {
      const container = this.map.getContainer() as any;
      /**
       * 隐藏高德相关标志
       */
      container.querySelector('.amap-logo').style.opacity = 0;
      container.querySelector('.amap-copyright').style.opacity = 0;
   }
   zoomToRect(southWest: GaoDePosition, northEast: GaoDePosition) {
      if (!this.viewBound) {
@@ -92,10 +104,9 @@
      } as MarkerLayerOption) as MarkerLayerOption;
      const layer = new AMap.LabelsLayer(markerLayerOption.layerOpt);
      let convertData = (dataList ?? []).map<AMap.LabelMarkerOptions>((item) => {
         const {
            markerOpt: { icon },
         } = markerLayerOption;
      const { markerOpt } = markerLayerOption;
      const convertData = (dataList ?? []).map<AMap.LabelMarkerOptions>((item) => {
         const { icon } = markerOpt;
         return {
            // name: '自提点9',
            position: item.position,
@@ -128,7 +139,14 @@
            extData: item.extData,
         };
      });
      const markerList = convertData.map((item) => new AMap.LabelMarker(item));
      const markerList = convertData.map((item) => {
         const label = new AMap.LabelMarker(item);
         if (markerOpt.click) {
            label.on('click', (e) => markerOpt.click(e, label));
         }
         return label;
      });
      layer.add(markerList);
      this.map.add(layer);
   }