diff --git a/src/assets/icons/circle.svg b/src/assets/icons/circle.svg
new file mode 100644
index 0000000..6340623
--- /dev/null
+++ b/src/assets/icons/circle.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1695029064053" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2979" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512.00337692 223.62507194c-39.07811828 0-76.40824868 7.54812851-112.02349786 22.7966725-35.61524846 15.24854397-66.28448731 35.85361048-92.03419966 61.53711098-25.75633368 25.82254479-46.28194643 56.45205638-61.51062641 92.02757833-15.26178662 35.70794488-22.88274757 72.93213694-22.88274757 112.07646705 0 39.01190645 7.62096168 76.36852217 22.88274757 111.94404411 15.22868071 35.71456621 35.75429346 66.3440778 61.51062641 92.1666226 25.74971235 25.69012185 56.41895047 46.14952278 92.03419966 61.53049039a284.03475437 284.03475437 0 0 0 112.02349786 22.80329382c39.06487635 0 76.39500676-7.69379412 112.01025522-22.80329382 35.61524846-15.38096763 66.28448731-35.84698987 92.03419965-61.5304904 25.75633368-25.82254479 46.28194643-56.45205638 61.51062642-92.16662258 15.28827122-35.57552195 22.88274757-72.93213694 22.88274758-111.94404412 0-39.1443301-7.5944771-76.36852217-22.88274758-112.07646704-15.22868071-35.57552195-35.75429346-66.21165414-61.51062642-92.03419894-25.74971235-25.67687918-56.41895047-46.28194643-92.03419965-61.53049038C588.39838368 231.17982179 551.06163194 223.62507194 511.99675559 223.62507194m0-82.41364616c50.20167629 0 98.25809517 9.75297643 144.02359033 29.39797427 45.79860107 19.63837652 85.22764104 46.0104785 118.27387798 79.10968462 33.07272152 32.96678243 59.41833818 72.38920181 79.03023011 118.2606353 19.61851326 45.73901058 29.43770153 93.81529271 29.45094418 143.94413656 0.03972724 50.27450871-9.81918826 98.35079085-29.45094418 144.08980216-19.62513458 45.87143423-45.97075126 85.29385288-79.03023011 118.254014-33.03299426 33.10582743-72.43554966 59.47792868-118.27387797 79.12292725C610.19526027 872.88993219 562.19181056 882.78195289 512.00337692 882.78195289c-50.18843363 0-98.19188333-9.89202143-144.02359031-29.39797427-45.85157025-19.63837652-85.26736828-46.0104785-118.28712063-79.1096846C216.62656579 741.30751156 190.28757045 701.8850922 170.66243587 656.00703736 151.03068066 610.27464813 141.17176516 562.19836599 141.21149168 511.93047787c0.01324266-50.13546446 9.83243092-98.21174661 29.45094419-143.94413656 19.61189194-45.88467617 45.950888-85.3004742 79.03023011-118.26725664 33.0396156-33.10582743 72.47527689-59.47130809 118.28712063-79.11630594C413.73866043 150.96440221 461.78845799 141.21142578 511.99675559 141.21142578" p-id="2980" fill="#1296db"></path></svg>
\ No newline at end of file
diff --git a/src/components/GMap.vue b/src/components/GMap.vue
index 4b315ad..60f1089 100644
--- a/src/components/GMap.vue
+++ b/src/components/GMap.vue
@@ -17,7 +17,7 @@
         <a><BorderOutlined class="fz18" /></a>
       </div>
       <div :class="state.currentType === 'circle' ? 'g-action-item selection' : 'g-action-item'" @click="draw('circle', true)">
-        <a><BorderOutlined class="fz18" /></a>
+        <a><a-image :src="cir" :preview="false" /></a>
       </div>
       <div v-if="mouseMode" class="g-action-item" @click="draw('off', false)">
         <a style="color: red;"><CloseOutlined /></a>
@@ -33,7 +33,7 @@
       </div>
     </div>
     <!-- 飞机OSD -->
-    <div v-if="osdVisible.visible && !osdVisible.is_dock" class="osd-panel fz12">
+    <div v-if="osdVisible?.visible && !osdVisible?.is_dock" class="osd-panel fz12">
       <div style="opacity: 0.8;background: #000;">
         <div class="pl5 pr5 flex-align-center flex-row flex-justify-between" style="border-bottom: 1px solid #515151; height: 18%;">
           <span>{{ osdVisible.callsign }}</span>
@@ -166,7 +166,7 @@
 
     </div> -->
     <!-- 机场OSD -->
-    <div v-if="osdVisible.visible && osdVisible.is_dock" class="osd-panel fz12">
+    <div v-if="osdVisible?.visible && osdVisible?.is_dock" class="osd-panel fz12">
       <div class="fz16 pl5 pr5 flex-align-center flex-row flex-justify-between" style="border-bottom: 1px solid #515151; height: 10%;">
         <span>{{ osdVisible.gateway_callsign }}</span>
         <span><a style="color: white;" @click="() => osdVisible.visible = false"><CloseOutlined /></a></span>
@@ -466,13 +466,14 @@ import {
   DeviceOsd, DeviceStatus, DockOsd, EGear, EModeCode, GatewayOsd, EDockModeCode,
   NetworkStateQualityEnum, NetworkStateTypeEnum, RainfallEnum, DroneInDockEnum
 } from '/@/types/device'
+import cir from '/@/assets/icons/circle.svg'
 import pin from '/@/assets/icons/pin-2d8cf0.svg'
 import M30 from '/@/assets/icons/m30.png'
 import {
   BorderOutlined, LineOutlined, CloseOutlined, ControlOutlined, TrademarkOutlined, ArrowDownOutlined,
   ThunderboltOutlined, SignalFilled, GlobalOutlined, HistoryOutlined, CloudUploadOutlined, RocketOutlined,
   FieldTimeOutlined, CloudOutlined, CloudFilled, FolderOpenOutlined, RobotFilled, ArrowUpOutlined, CarryOutOutlined,
-  EyeInvisibleOutlined, VideoCameraOutlined
+  VideoCameraOutlined, LeftCircleOutlined
 } from '@ant-design/icons-vue'
 import { EDeviceTypeName } from '../types'
 import DockControlPanel from './g-map/DockControlPanel.vue'
@@ -483,6 +484,7 @@ import LiveNewOthers from '/@/components/livestream-newOthers.vue'
 
 export default defineComponent({
   components: {
+    LeftCircleOutlined,
     LiveNewOthers,
     BorderOutlined,
     LineOutlined,
@@ -626,13 +628,11 @@ export default defineComponent({
         const event = newData
         let exist = false
         if (Object.keys(event.mapElementCreat).length !== 0) {
-          console.log(event.mapElementCreat)
           const ele = event.mapElementCreat
           store?.state?.Layers.forEach(layer => {
             layer.elements.forEach(e => {
               if (e.id === ele.id) {
                 exist = true
-                console.log('true')
               }
             })
           })
@@ -702,8 +702,6 @@ export default defineComponent({
     })
 
     function getDrawCallback ({ obj }) {
-      console.log(333)
-      console.log(obj)
       switch (state.currentType) {
         case MapDoodleEnum.PIN:
           postPinPositionResource(obj)
@@ -750,19 +748,17 @@ export default defineComponent({
       store.state.coverList.push(obj)
     }
     async function postPolygonResource (obj) {
-      console.log(obj, 'hafhhaf')
       const req = getPoygonResource(obj)
       setLayers(req)
       updateCoordinates('gcj02-wgs84', req)
       const result = await postElementsReq(shareId.value, req)
       obj.setExtData({ id: req.id, name: req.name, area: 222 })
       store.state.coverList.push(obj)
-      // console.log(store.state.coverList)
     }
     function getCircleResource (obj) {
     // name暂时写死,还在调试中
       const name = '1212'
-      const resource = generateCircleContent([...obj.getCenter().pos, obj.getRadius()])
+      const resource = generateCircleContent(obj.getCenter(), obj.getRadius())
       const id = uuidv4()
       return {
         id,
@@ -808,14 +804,13 @@ export default defineComponent({
       return { name, id }
     }
     function setLayers (resource: PostElementsBody) {
-      const layers = store.state.Layers
-      const layer = layers.find(item => item.id.includes(shareId.value))
+      const layers = store?.state?.Layers
+      const layer = layers ? layers.find(item => item.id.includes(shareId.value)) : ''
       // layer.id = 'private_layer' + uuidv4()
       // layer?.elements.push(resource)
       if (layer?.elements) {
         (layer?.elements as any[]).push(resource)
       }
-      // console.log('layers', layers)
       // store.commit('SET_LAYER_INFO', layers)
     }
     function updateCoordinates (transformType: string, element: any) {
@@ -880,7 +875,7 @@ export default defineComponent({
         } else if (MapElementEnum.CIR === type && geoType === 'Circle') {
           let position = element.resource?.content.geometry
             .coordinates
-            // 半径
+          // 半径
           const radius = position[2]
           if (transformType === 'wgs84-gcj02') {
             position = wgs84togcj02(
@@ -919,6 +914,7 @@ export default defineComponent({
       pin,
       state,
       M30,
+      cir,
       deviceInfo,
       EGear,
       EModeCode,
diff --git a/src/components/LayersTree.vue b/src/components/LayersTree.vue
index 56286d8..d0f5bc4 100644
--- a/src/components/LayersTree.vue
+++ b/src/components/LayersTree.vue
@@ -47,7 +47,7 @@ const state = reactive({
 })
 const getTreeData = computed(() => {
   // console.log('props.treeData', JSON.parse(JSON.stringify(props.layerData)))
-  return JSON.parse(JSON.stringify(props.layerData))
+  return JSON.parse(JSON.stringify(props?.layerData))
 })
 const shareId = computed(() => {
   return store.state.layerBaseInfo.share
diff --git a/src/hooks/use-g-map-cover.ts b/src/hooks/use-g-map-cover.ts
index f5c913e..ca686aa 100644
--- a/src/hooks/use-g-map-cover.ts
+++ b/src/hooks/use-g-map-cover.ts
@@ -76,7 +76,6 @@ export function useGMapCover () {
       strokeColor: '#FF33FF',
       strokeOpacity: 1,
       strokeWeight: 6,
-      strokeOpacity: 0.2,
       fillOpacity: 0.4,
       strokeStyle: 'dashed',
       strokeDasharray: [10, 10],
@@ -84,7 +83,10 @@ export function useGMapCover () {
       fillColor: color,
       zIndex: 50,
     })
-
+    // 点击触发
+    circle.on('click', function (e) {
+      store.commit('SET_LAYER_ID', data.id)
+    })
     AddCoverToMap(circle)
   }
 
diff --git a/src/pages/page-web/projects/layer.vue b/src/pages/page-web/projects/layer.vue
index 0b9240f..61fd5cc 100644
--- a/src/pages/page-web/projects/layer.vue
+++ b/src/pages/page-web/projects/layer.vue
@@ -171,14 +171,13 @@ import importImg from '/@/assets/icons/import.svg'
 const root = getRoot()
 const store = useMyStore()
 let useGMapCoverHook = useGMapCover(store)
-console.log('store', store)
 const mapLayers = ref(store?.state?.Layers)
 const checkedKeys = ref<string[]>([])
 const selectedKeys = ref<string[]>([])
 const selectedKey = ref<string>('')
 const selectedLayer = ref<any>(null)
 const visible = ref<boolean>(false)
-store.commit('SET_DRAW_VISIBLE_INFO', visible.value)
+store?.commit('SET_DRAW_VISIBLE_INFO', visible.value)
 const geoType = GeoType
 const layerState = reactive({
   layerName: '',
@@ -216,7 +215,7 @@ function initMapCover () {
   })
 }
 watch(
-  () => store.state.Layers,
+  () => store?.state.Layers,
   newData => {
     mapLayers.value = newData
   },
@@ -226,13 +225,13 @@ watch(
 )
 
 watch(
-  () => store.state.layerId,
+  () => store?.state.layerId,
   newLayerId => {
     selectedKey.value = 'resource__' + newLayerId
     selectedLayer.value = getCurrentLayer(selectedKey.value)
     setBaseInfo()
     visible.value = true
-    store.commit('SET_DRAW_VISIBLE_INFO', visible.value)
+    store?.commit('SET_DRAW_VISIBLE_INFO', visible.value)
   },
   {
     deep: true // 监听属性变化
@@ -285,20 +284,18 @@ function checkLayer (keys: string[]) {
   console.log('checkLayer', keys, selectedKeys.value, checkedKeys.value)
 }
 function selectLayer (keys: string[], e) {
-  // console.log('selectLayer', e.node.eventKey, e.selected)
   if (e.selected) {
     selectedKey.value = e.node.eventKey
     selectedLayer.value = getCurrentLayer(selectedKey.value)
     setBaseInfo()
   }
   visible.value = e.selected
-  store.commit('SET_DRAW_VISIBLE_INFO', visible.value)
+  store?.commit('SET_DRAW_VISIBLE_INFO', visible.value)
   // store.dispatch('updateElement', { type: 'is_select', id: e.node.eventKey, bool: e.selected })
 }
 function getCurrentLayer (id: string) {
-  const Layers = store.state.Layers
+  const Layers = store?.state.Layers
   const key = id.replaceAll('resource__', '')
-  // console.log('selectedKey.value', selectedKey.value)
   let layer = null
   const findCan = function (V) {
     V.forEach(item => {
@@ -312,7 +309,6 @@ function getCurrentLayer (id: string) {
   }
   findCan(Layers)
   // const layer = Layers.find(item => item.elements.find(el => el.id === key))
-  console.log('layer', layer)
   return layer
 }
 function setBaseInfo () {
@@ -348,7 +344,7 @@ onMounted(() => {
   getAllElement()
 })
 function closeDrawer () {
-  store.commit('SET_DRAW_VISIBLE_INFO', false)
+  store?.commit('SET_DRAW_VISIBLE_INFO', false)
   selectedKeys.value = []
 }
 function changeColor (color: Color) {
@@ -363,13 +359,12 @@ async function deleteElement () {
   const elementid = selectedLayer.value.id
 
   await deleteElementReq(elementid, {}).then(async (res: any) => {
-    // console.log('delete element res:', res)
     if (res.code !== 0) {
       console.warn(res)
       return
     }
     visible.value = false
-    store.commit('SET_DRAW_VISIBLE_INFO', visible.value)
+    store?.commit('SET_DRAW_VISIBLE_INFO', visible.value)
     useGMapCoverHook.removeCoverFromMap(elementid)
     getElementGroups()
   })
@@ -382,9 +377,9 @@ async function getElementGroups (type?: string) {
   mapLayers.value = result.data
   mapLayers.value = updateWgs84togcj02()
   if (type && type === 'init') {
-    store.dispatch('setLayerInfo', mapLayers.value)
+    store?.dispatch('setLayerInfo', mapLayers.value)
   }
-  store.commit('SET_LAYER_INFO', mapLayers.value)
+  store?.commit('SET_LAYER_INFO', mapLayers.value)
 }
 async function updateElements () {
   let content = null
@@ -489,6 +484,23 @@ function updateCoordinates (transformType: string, element: LayerResource) {
         })
       }
       element.resource.content.geometry.coordinates = [coordinates]
+    } else if (MapElementEnum.CIR === type && geoType === 'Circle') {
+      let position = element.resource?.content.geometry
+        .coordinates
+      // 半径
+      const radius = position[2]
+      if (transformType === 'wgs84-gcj02') {
+        position = wgs84togcj02(
+          position[0],
+          position[1]
+        ) as GeojsonCoordinate
+      } else if (transformType === 'gcj02-wgs84') {
+        position = gcj02towgs84(
+          position[0],
+          position[1]
+        ) as GeojsonCoordinate
+      }
+      element.resource.content.geometry.coordinates = [...position, radius]
     }
   }
 }
diff --git a/src/types/mapLayer.ts b/src/types/mapLayer.ts
index e51af68..c5df9dc 100644
--- a/src/types/mapLayer.ts
+++ b/src/types/mapLayer.ts
@@ -72,7 +72,8 @@ export interface Color {
 export enum GeoType {
   LineString = 'LineString',
   Polygon = 'Polygon',
-  Point = 'Point'
+  Point = 'Point',
+  Circle ='Circle'
 }
 export enum ResourceStatus {
   NotShow,