diff --git a/packages/component/src/markerlayer.ts b/packages/component/src/markerlayer.ts
index 1740f4c1e3..2d4dae08cf 100644
--- a/packages/component/src/markerlayer.ts
+++ b/packages/component/src/markerlayer.ts
@@ -77,7 +77,8 @@ export default class MarkerLayer extends EventEmitter {
       this.initCluster();
       this.update();
       // 地图视野变化时,重新计算视野内的聚合点。
-      this.mapsService.on('camerachange', this.update);
+      this.mapsService.on('camerachange', this.update); // amap1.x 更新事件
+      this.mapsService.on('viewchange', this.update); // amap2.0 更新事件
     }
     this.addMarkers();
     return this;
@@ -98,6 +99,24 @@ export default class MarkerLayer extends EventEmitter {
     }
   }
 
+  /**
+   * 隐藏 marker 在每个 marker 上单独修改属性而不是在 markerContainer 上修改(在 markerContainer 修改会有用户在场景加载完之前调用失败的问题)
+   */
+  public hide() {
+    this.markers.map((m) => {
+      m.getElement().style.opacity = '0';
+    });
+  }
+
+  /**
+   * 显示 marker
+   */
+  public show() {
+    this.markers.map((m) => {
+      m.getElement().style.opacity = '1';
+    });
+  }
+
   public getMarkers() {
     const cluster = this.markerLayerOption.cluster;
     return cluster ? this.clusterMarkers : this.markers;
diff --git a/packages/core/src/services/interaction/PickingService.ts b/packages/core/src/services/interaction/PickingService.ts
index 784bdbed66..a9eff49243 100644
--- a/packages/core/src/services/interaction/PickingService.ts
+++ b/packages/core/src/services/interaction/PickingService.ts
@@ -321,7 +321,29 @@ export default class PickingService implements IPickingService {
       featureId: number | null;
     },
   ) {
-    layer.emit(target.type, target);
+    // 判断是否发生事件冲突
+    if (this.isEventCrash(target)) {
+      layer.emit(target.type, target);
+    }
+  }
+
+  /**
+   * 检测触发事件是否是在 marker/popup 上发生,若是则会发生冲突(发生冲突时 marker/popup 事件优先)
+   * @param obj
+   * @returns
+   */
+  private isEventCrash(obj: any) {
+    let notCrash = true;
+    obj.target.path.map((p: HTMLElement) => {
+       if(p.classList) {
+        p.classList.forEach((n: any) => {
+          if (n === 'l7-marker' || n === 'l7-popup') {
+            notCrash = false;
+          }
+        });
+       }
+    });
+    return notCrash;
   }
 
   /**
diff --git a/packages/maps/src/amap2/map.ts b/packages/maps/src/amap2/map.ts
index ea854169c7..6d170c1e52 100644
--- a/packages/maps/src/amap2/map.ts
+++ b/packages/maps/src/amap2/map.ts
@@ -152,7 +152,12 @@ export default class AMapService
       //   'amap-maps',
       // )[0] as HTMLElement;
       // this.markerContainer = DOM.create('div', 'l7-marker-container2', amap);
-      this.markerContainer = mapContainer;
+      this.markerContainer = DOM.create(
+        'div',
+        'l7-marker-container2',
+        mapContainer,
+      );
+      // this.markerContainer = mapContainer;
     }
   }
   public getMarkerContainer(): HTMLElement {
diff --git a/stories/Map/components/amap2demo_clustermarker.tsx b/stories/Map/components/amap2demo_clustermarker.tsx
new file mode 100644
index 0000000000..ecfd412c98
--- /dev/null
+++ b/stories/Map/components/amap2demo_clustermarker.tsx
@@ -0,0 +1,65 @@
+//@ts-ignore
+import { MarkerLayer, Marker, Scene } from '@antv/l7';
+import { GaodeMap, GaodeMapV1 } from '@antv/l7-maps';
+import * as React from 'react';
+export default class Amap2demo_clustermarker extends React.Component {
+  // @ts-ignore
+  private scene: Scene;
+
+  public componentWillUnmount() {
+    // this.scene.destroy();
+  }
+
+  public async componentDidMount() {
+    const scene = new Scene({
+      id: 'map',
+      map: new GaodeMap({
+        center: [110.19382669582967, 30.258134],
+        pitch: 0,
+        zoom: 3,
+      }),
+    });
+
+    scene.on('loaded', () => {
+      addMarkers();
+      scene.render();
+    });
+    function addMarkers() {
+      fetch(
+        'https://gw.alipayobjects.com/os/basement_prod/d3564b06-670f-46ea-8edb-842f7010a7c6.json',
+      )
+        .then((res) => res.json())
+        .then((nodes) => {
+          const markerLayer = new MarkerLayer({
+            cluster: true,
+          });
+          for (let i = 0; i < nodes.features.length; i++) {
+            const { coordinates } = nodes.features[i].geometry;
+            const marker = new Marker().setLnglat({
+              lng: coordinates[0],
+              lat: coordinates[1],
+            });
+            markerLayer.addMarker(marker);
+          }
+          scene.addMarkerLayer(markerLayer);
+        });
+    }
+  }
+
+  public render() {
+    return (
+      <>
+        <div
+          id="map"
+          style={{
+            position: 'absolute',
+            top: 0,
+            left: 0,
+            right: 0,
+            bottom: 0,
+          }}
+        />
+      </>
+    );
+  }
+}
diff --git a/stories/Map/components/amap2demo_markerlayer.tsx b/stories/Map/components/amap2demo_markerlayer.tsx
index efac07e85b..4dcb9f2b41 100644
--- a/stories/Map/components/amap2demo_markerlayer.tsx
+++ b/stories/Map/components/amap2demo_markerlayer.tsx
@@ -58,7 +58,20 @@ export default class Amap2demo_markerlayer extends React.Component {
       markerLayer.addMarker(marker);
     }
     scene.addMarkerLayer(markerLayer);
+    // scene.on('loaded', () => {
+    //   markerLayer.hide()
+    // })
 
+    let f = 0;
+    setInterval(() => {
+      if (f === 0) {
+        markerLayer.hide();
+        f = 1;
+      } else {
+        markerLayer.show();
+        f = 0;
+      }
+    }, 800);
     this.scene = scene;
   }
 
diff --git a/stories/Map/map.stories.tsx b/stories/Map/map.stories.tsx
index e4e34b1780..cd6ab411a0 100644
--- a/stories/Map/map.stories.tsx
+++ b/stories/Map/map.stories.tsx
@@ -42,6 +42,7 @@ import Amap2demo_citybuilding from "./components/amap2demo_citybuilding"
 import Amap2demo_drilldown from "./components/amap2demo_drilldown"
 
 import Amap2demo_markerlayer from "./components/amap2demo_markerlayer"
+import Amap2demo_clustermarker from './components/amap2demo_clustermarker';
 
 import Amap2demo_instance from "./components/amap2demo_instance"
 
@@ -92,6 +93,7 @@ storiesOf('地图方法', module)
         .add('高德地图2.0 点击下钻', () => <Amap2demo_drilldown />)
 
         .add('高德地图2.0 Marker图层', () => <Amap2demo_markerlayer />)
+        .add('高德地图2.0 clusterMarker图层', () => <Amap2demo_clustermarker />)
 
         .add('高德地图2.0 instance实例', () => <Amap2demo_instance />)
 
diff --git a/stories/React/components/Scene.tsx b/stories/React/components/Scene.tsx
index 67886b0fa1..9ab625cffd 100644
--- a/stories/React/components/Scene.tsx
+++ b/stories/React/components/Scene.tsx
@@ -25,9 +25,16 @@ export default React.memo(function Map() {
     fetchData();
   }, []);
   const popupClick = (e: any) => {
-    e.stopPropagation();
+    console.log(e);
+    // e.stopPropagation();
     alert('11333');
   };
+
+  const markerClick = (e: any) => {
+    console.log(e);
+    // e.stopPropagation();
+    alert('marker');
+  };
   return (
     <>
       <AMapScene
@@ -50,12 +57,20 @@ export default React.memo(function Map() {
             closeOnClick: false,
             stopPropagation: false,
           }}
-          lnglat={[110.1938, 30.25] as number[]}
+          lnglat={[115, 30.25] as number[]}
         >
           <p onClick={popupClick}>122224</p>
         </Popup>
-        <Marker lnglat={[100.1938, 30.25] as number[]}>
-          <p onClick={popupClick}>tes</p>
+        <Marker lnglat={[100.1938, 27.25] as number[]}>
+          <div
+            style={{
+              border: '1px solid #fff',
+              background: '#FFF',
+              fontSize: '24px',
+            }}
+          >
+            <p onClick={markerClick}>tes</p>
+          </div>
         </Marker>
         <PolygonLayer
           key={'2'}
@@ -86,7 +101,7 @@ export default React.memo(function Map() {
           <LayerEvent
             type="click"
             handler={(e) => {
-              console.log(e);
+              console.log('LayerEvent', e);
             }}
           />
         </PolygonLayer>