UNPKG

huawei-map-vue3

Version:

华为地图 Vue3 组件库 - 基于华为地图API开发的Vue3地图组件,提供完整的地图功能封装

15 lines 64.9 kB
(function(_,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(_=typeof globalThis<"u"?globalThis:_||self,e(_.HuaweiMapVue3={},_.Vue))})(this,function(_,e){"use strict";function ee(){return"DQEDAD1UhYOqf6mN2VJ1cy2A6BzTN7gSr28xX0KO4hUw1cDESelU6d5WeWn3mezhd3rxLtUSsDJpltkcZLYCoLxcNkpJsYkefIg1Pg=="}const T={apiKey:ee(),apiUrl:"https://mapapi.cloud.huawei.com/mapjs/v1/api/js",defaultCenter:{lat:+"23.130415047434678"||23.130415047434678,lng:+"113.32380294799805"||113.32380294799805},defaultZoom:8,defaultLanguage:"zh",defaultSourceType:"vector"},te={standard:"standard",night:"night",simple:"simple"},oe={ROADMAP:"ROADMAP",TERRAIN:"TERRAIN"};let Z=!1,F=!1,P=null;function K(y){if(F&&window.HWMapJsSDK)return Promise.resolve();if(Z&&P)return P;Z=!0;const o=y||T.apiKey;return P=new Promise((E,i)=>{const f=document.createElement("script");f.type="text/javascript",f.async=!0;const w=`initHuaweiMap_${Date.now()}`;window[w]=()=>{F=!0,Z=!1,delete window[w],E()},f.src=`${T.apiUrl}?callback=${w}&key=${o}`,f.onerror=()=>{Z=!1,P=null,delete window[w],i(new Error("华为地图API加载失败"))},document.head.appendChild(f)}),P}function ne(){return F&&!!window.HWMapJsSDK}function j(y,o){const E=e.ref([]),i=100,f=e.ref(),w=e.ref(),u=e.ref(),b=new Map;let l=0;const M=(I,D)=>{const x={id:`${Date.now()}-${I}-${++l}`,type:I,timestamp:Date.now(),data:D};E.value.unshift(x),E.value.length>i&&(E.value=E.value.slice(0,i))},C=I=>({lat:I[1],lng:I[0]}),h=()=>{if(!y.value)return;const I=d=>{const $={coordinate:d.coordinate,pixel:d.pixel,latLng:C(d.coordinate)};M("click",$),o?.onClick?.($)};y.value.on("click",I),v("click",I);const D=d=>{const $={coordinate:d.coordinate,pixel:d.pixel,latLng:C(d.coordinate)};M("dblclick",$),o?.onDoubleClick?.($)};y.value.on("dblclick",D),v("dblclick",D);const x=d=>{const $={coordinate:d.coordinate,pixel:d.pixel,latLng:C(d.coordinate)};M("contextmenu",$),o?.onRightClick?.($)};y.value.on("contextmenu",x),v("contextmenu",x);const m=d=>{const $={coordinate:d.coordinate,pixel:d.pixel,latLng:C(d.coordinate)};o?.onMouseMove?.($)};y.value.on("pointermove",m),v("pointermove",m);const c=d=>{const $={coordinate:d.coordinate,pixel:d.pixel,latLng:C(d.coordinate)};M("mousedown",$),o?.onMouseDown?.($)};y.value.on("pointerdown",c),v("pointerdown",c);const p=d=>{const $={coordinate:d.coordinate,pixel:d.pixel,latLng:C(d.coordinate)};M("mouseup",$),o?.onMouseUp?.($)};y.value.on("pointerup",p),v("pointerup",p);const k=d=>{const $={coordinate:d.coordinate,pixel:d.pixel,latLng:C(d.coordinate)};o?.onDrag?.($)};y.value.on("pointerdrag",k),v("pointerdrag",k);const W=()=>{M("movestart"),o?.onMoveStart?.()};y.value.on("movestart",W),v("movestart",W);const V=()=>{M("moveend"),o?.onMoveEnd?.()};y.value.on("moveend",V),v("moveend",V);const s=()=>{const d=y.value.getCenter();f.value=d,M("centerChanged",d),o?.onCenterChanged?.(d)};y.value.onCenterChanged(s),v("centerChanged",s);const t=()=>{const d=y.value.getZoom();w.value=d,M("zoomChanged",d),o?.onZoomChanged?.(d)};y.value.onZoomChanged(t),v("zoomChanged",t);const r=()=>{const d=y.value.getHeading();u.value=d,M("headingChanged",d),o?.onHeadingChanged?.(d)};y.value.onHeadingChanged(r),v("headingChanged",r)},v=(I,D)=>{b.has(I)||b.set(I,[]),b.get(I).push(D)},g=()=>{y.value&&(b.forEach((I,D)=>{I.forEach(x=>{D==="centerChanged"||D==="zoomChanged"||D==="headingChanged"||y.value.un(D,x)})}),b.clear())},n=()=>{E.value=[]},N=(I=10)=>E.value.slice(0,I),B=I=>E.value.filter(D=>D.type===I);return e.onUnmounted(()=>{g()}),{eventHistory:E,currentCenter:f,currentZoom:w,currentHeading:u,bindMapEvents:h,unbindAllEvents:g,clearHistory:n,getRecentEvents:N,getEventsByType:B,addToHistory:M}}function J(y,o){const E=e.ref([]),i=e.ref(new Map),f=e.ref(null),w=e.computed(()=>E.value.filter(V=>V.visible!==!1)),u=e.computed(()=>E.value.length),b=e.computed(()=>w.value.length),l=()=>"marker_"+Date.now()+"_"+Math.random().toString(36).substr(2,9),M=V=>{if(!y.value)return null;const s={position:V.position,map:y.value,draggable:V.draggable||!1,animation:V.animation||null,zIndex:V.zIndex||0};V.icon&&(s.icon=V.icon),V.label&&(s.label=V.label),V.properties&&(s.properties=V.properties);const t=new window.HWMapJsSDK.HWMarker(s);return C(t,V),t},C=(V,s)=>{o&&(o.onClick&&V.addListener("click",t=>{o.onClick(s,t)}),o.onDoubleClick&&V.addListener("dbclick",t=>{o.onDoubleClick(s,t)}),o.onRightClick&&V.addListener("contextmenu",t=>{o.onRightClick(s,t)}),o.onMouseOver&&V.addListener("mouseOver",t=>{o.onMouseOver(s,t)}),o.onMouseOut&&V.addListener("mouseOut",t=>{o.onMouseOut(s,t)}),s.draggable&&(o.onDragStart&&V.addListener("dragstart",t=>{o.onDragStart(s,t)}),o.onDrag&&V.addListener("drag",t=>{o.onDrag(s,t)}),o.onDragEnd&&V.addListener("dragend",t=>{const r=V.getPosition();s.position=r,o.onDragEnd(s,t)})))},h=V=>{const s=V.id||l(),t={...V,id:s,visible:V.visible!==!1},r=M(t);return r&&(i.value.set(s,r),E.value.push(t)),s},v=V=>V.map(s=>h(s)),g=V=>{const s=i.value.get(V);s&&(s.setMap(null),i.value.delete(V));const t=E.value.findIndex(r=>r.id===V);return t>-1?(E.value.splice(t,1),f.value?.id===V&&(f.value=null),!0):!1},n=V=>{let s=0;return V.forEach(t=>{g(t)&&s++}),s},N=()=>{const V=E.value.length;return i.value.forEach(s=>{s.setMap(null)}),i.value.clear(),E.value=[],f.value=null,V},B=(V,s)=>{const t=E.value.findIndex($=>$.id===V);if(t===-1)return!1;const r=E.value[t],d=i.value.get(V);return d?(Object.assign(r,s),s.position&&d.setPosition(s.position),s.icon!==void 0&&d.setIcon(s.icon),s.label!==void 0&&d.setLabel(s.label),s.draggable!==void 0&&d.setDraggable(s.draggable),s.animation!==void 0&&d.setAnimation(s.animation),s.zIndex!==void 0&&d.setZIndex(s.zIndex),s.visible!==void 0&&d.setMap(s.visible?y.value:null),!0):!1},I=V=>E.value.find(s=>s.id===V),D=V=>i.value.get(V),x=V=>{const s=I(V);if(!s)return!1;const t=!s.visible;return B(V,{visible:t})},m=V=>{const s=I(V);return s?(f.value=s,!0):!1},c=()=>{f.value=null},p=(V,s=1e-4)=>E.value.filter(t=>{const r=Math.abs(t.position.lat-V.lat),d=Math.abs(t.position.lng-V.lng);return r<=s&&d<=s}),k=()=>{if(w.value.length===0)return null;let V=1/0,s=-1/0,t=1/0,r=-1/0;return w.value.forEach(d=>{V=Math.min(V,d.position.lat),s=Math.max(s,d.position.lat),t=Math.min(t,d.position.lng),r=Math.max(r,d.position.lng)}),{ne:{lat:s,lng:r},sw:{lat:V,lng:t}}};return{markers:E,visibleMarkers:w,selectedMarker:f,markerCount:u,visibleMarkerCount:b,addMarker:h,addMarkers:v,removeMarker:g,removeMarkers:n,clearMarkers:N,updateMarker:B,getMarker:I,getMarkerInstance:D,toggleMarkerVisibility:x,selectMarker:m,deselectMarker:c,findMarkersByPosition:p,getMarkersBounds:k,fitMarkersToView:()=>{if(!y.value)return!1;const V=k();return V?(y.value.fitBounds(V),!0):!1}}}function Y(y,o){const E=e.ref([]),i=e.ref(new Map),f=e.ref(null),w=e.computed(()=>E.value.filter(t=>t.visible!==!1)),u=e.computed(()=>E.value.length),b=e.computed(()=>w.value.length),l=()=>"infowindow_"+Date.now()+"_"+Math.random().toString(36).substr(2,9),M=t=>{if(!y.value)return null;const r={position:t.position,content:t.content,map:y.value};t.offset&&(r.offset=t.offset);const d=new window.HWMapJsSDK.HWInfoWindow(r);return C(d,t),d},C=(t,r)=>{o&&o.onClose&&t.addListener("close",()=>{r.visible=!1,f.value?.id===r.id&&(f.value=null),o.onClose(r)})},h=t=>{const r=t.id||l(),d={...t,id:r,visible:t.visible!==!1,closable:t.closable!==!1},$=M(d);return $&&(i.value.set(r,$),E.value.push(d)),r},v=(t,r)=>{const d=D(t),$=i.value.get(t);return!d||!$?!1:(n(),r?$.open(r):$.open(),d.visible=!0,f.value=d,o?.onOpen?.(d),!0)},g=t=>{const r=D(t),d=i.value.get(t);return!r||!d?!1:(d.close(),r.visible=!1,f.value?.id===t&&(f.value=null),o?.onClose?.(r),!0)},n=()=>{let t=0;return E.value.forEach(r=>{r.visible&&(g(r.id),t++)}),t},N=t=>{const r=i.value.get(t);r&&(r.close(),i.value.delete(t));const d=E.value.findIndex($=>$.id===t);return d>-1?(E.value.splice(d,1),f.value?.id===t&&(f.value=null),!0):!1},B=()=>{const t=E.value.length;return i.value.forEach(r=>{r.close()}),i.value.clear(),E.value=[],f.value=null,t},I=(t,r)=>{const d=E.value.findIndex(H=>H.id===t);if(d===-1)return!1;const $=E.value[d],U=i.value.get(t);return U?(Object.assign($,r),r.position&&U.setPosition(r.position),r.content!==void 0&&(U.setContent(r.content),o?.onContentChange?.($,r.content)),!0):!1},D=t=>E.value.find(r=>r.id===t),x=t=>i.value.get(t),m=t=>E.value.filter(r=>r.markerId===t);return{infoWindows:E,visibleInfoWindows:w,activeInfoWindow:f,infoWindowCount:u,visibleInfoWindowCount:b,addInfoWindow:h,openInfoWindow:v,closeInfoWindow:g,closeAllInfoWindows:n,removeInfoWindow:N,clearInfoWindows:B,updateInfoWindow:I,getInfoWindow:D,getInfoWindowInstance:x,findInfoWindowsByMarkerId:m,createInfoWindowForMarker:(t,r,d,$)=>{const U={position:r,content:d,markerId:t,...$};return h(U)},showMarkerInfoWindow:(t,r)=>{const d=m(t);return d.length===0?!1:v(d[0].id,r)},hideMarkerInfoWindow:t=>{const r=m(t);let d=0;return r.forEach($=>{g($.id)&&d++}),d>0},toggleInfoWindow:(t,r)=>{const d=D(t);return d?d.visible?g(t):v(t,r):!1},setInfoWindowContent:(t,r)=>I(t,{content:r}),moveInfoWindow:(t,r)=>I(t,{position:r})}}const le={key:0,class:"map-loading"},ae={key:1,class:"map-error"},ie=e.defineComponent({__name:"HuaweiMap",props:{width:{default:"100%"},height:{default:"400px"},center:{default:()=>T.defaultCenter},zoom:{default:T.defaultZoom},language:{default:T.defaultLanguage},sourceType:{default:T.defaultSourceType},mapType:{default:"ROADMAP"},minZoom:{default:2},maxZoom:{default:22},copyrightControl:{type:Boolean,default:!1},locationControl:{type:Boolean,default:!1},navigationControl:{type:Boolean,default:!1},rotateControl:{type:Boolean,default:!1},scaleControl:{type:Boolean,default:!1},zoomControl:{type:Boolean,default:!0},zoomSlider:{type:Boolean,default:!1},logoPosition:{default:"BOTTOM_LEFT"},presetStyleId:{default:"standard"},opacity:{default:1},apiKey:{},enableEventMonitor:{type:Boolean,default:!1}},emits:["map-ready","map-click","map-dblclick","map-rightclick","map-mousemove","map-mousedown","map-mouseup","map-drag","move-start","move-end","center-changed","zoom-changed","heading-changed","map-error","marker-click","marker-dblclick","marker-rightclick","marker-dragstart","marker-drag","marker-dragend","infowindow-open","infowindow-close","infowindow-content-change"],setup(y,{expose:o,emit:E}){const i=y,f=E,w=e.ref(),u=e.ref(!0),b=e.ref(""),l=e.ref(),M={onClick:a=>f("map-click",a),onDoubleClick:a=>f("map-dblclick",a),onRightClick:a=>f("map-rightclick",a),onMouseMove:a=>f("map-mousemove",a),onMouseDown:a=>f("map-mousedown",a),onMouseUp:a=>f("map-mouseup",a),onDrag:a=>f("map-drag",a),onMoveStart:()=>f("move-start"),onMoveEnd:()=>f("move-end"),onCenterChanged:a=>f("center-changed",a),onZoomChanged:a=>f("zoom-changed",a),onHeadingChanged:a=>f("heading-changed",a)},{eventHistory:C,currentCenter:h,currentZoom:v,currentHeading:g,bindMapEvents:n,unbindAllEvents:N,clearHistory:B}=j(l,i.enableEventMonitor?M:void 0),I={onClick:(a,S)=>{f("marker-click",a,S);const Q=d(a.id);Q&&G(a.id,Q)},onDoubleClick:(a,S)=>f("marker-dblclick",a,S),onRightClick:(a,S)=>f("marker-rightclick",a,S),onDragStart:(a,S)=>f("marker-dragstart",a,S),onDrag:(a,S)=>f("marker-drag",a,S),onDragEnd:(a,S)=>f("marker-dragend",a,S)},{markers:D,visibleMarkers:x,selectedMarker:m,markerCount:c,visibleMarkerCount:p,addMarker:k,addMarkers:W,removeMarker:V,removeMarkers:s,clearMarkers:t,updateMarker:r,getMarker:d,toggleMarkerVisibility:$,selectMarker:U,deselectMarker:H,fitMarkersToView:Cn}=J(l,I),Mn={onOpen:a=>f("infowindow-open",a),onClose:a=>f("infowindow-close",a),onContentChange:(a,S)=>f("infowindow-content-change",a,S)},{infoWindows:hn,visibleInfoWindows:vn,activeInfoWindow:$n,infoWindowCount:xn,visibleInfoWindowCount:In,addInfoWindow:Dn,openInfoWindow:Sn,closeInfoWindow:_n,closeAllInfoWindows:Tn,removeInfoWindow:Bn,clearInfoWindows:Wn,updateInfoWindow:zn,getInfoWindow:Ln,createInfoWindowForMarker:Un,showMarkerInfoWindow:G,hideMarkerInfoWindow:Pn,toggleInfoWindow:Zn,setInfoWindowContent:An,moveInfoWindow:Fn}=Y(l,Mn),z=async()=>{try{if(u.value=!0,b.value="",!w.value)throw new Error("地图容器未找到");await K(i.apiKey),await e.nextTick();const a={center:i.center,zoom:i.zoom,language:i.language,sourceType:i.sourceType,mapType:i.mapType,minZoom:i.minZoom,maxZoom:i.maxZoom,copyrightControl:i.copyrightControl,locationControl:i.locationControl,navigationControl:i.navigationControl,rotateControl:i.rotateControl,scaleControl:i.scaleControl,zoomControl:i.zoomControl,zoomSlider:i.zoomSlider,logoPosition:i.logoPosition,presetStyleId:i.presetStyleId,rasterPreload:!0,pixelRatio:window.devicePixelRatio||1};l.value=new window.HWMapJsSDK.HWMap(w.value,a),i.opacity!==1&&l.value.setOpacity(i.opacity),setTimeout(()=>{l.value&&l.value.resize()},100),setTimeout(()=>{l.value&&l.value.resize()},300),setTimeout(()=>{l.value&&l.value.resize()},500),i.enableEventMonitor?n():On(),u.value=!1,f("map-ready",l.value)}catch(a){u.value=!1;const S=a instanceof Error?a.message:"地图初始化失败";b.value=S,f("map-error",S),console.error("华为地图初始化失败:",a)}},On=()=>{l.value&&(l.value.on("click",a=>{f("map-click",a)}),l.value.on("dblclick",a=>{f("map-dblclick",a)}),l.value.on("contextmenu",a=>{f("map-rightclick",a)}),l.value.onCenterChanged(()=>{const a=l.value.getCenter();f("center-changed",a)}),l.value.onZoomChanged(()=>{const a=l.value.getZoom();f("zoom-changed",a)}))},Rn=()=>{z()};e.watch(()=>i.center,a=>{l.value&&a&&l.value.setCenter(a)}),e.watch(()=>i.zoom,a=>{l.value&&a&&l.value.setZoom(a)}),e.watch(()=>i.opacity,a=>{l.value&&a!==void 0&&l.value.setOpacity(a)}),e.watch(()=>i.mapType,(a,S)=>{l.value&&a!==S&&(console.log("地图类型发生变化,重新初始化地图:",a),z())}),e.watch([()=>i.width,()=>i.height],()=>{l.value&&e.nextTick(()=>{setTimeout(()=>{l.value&&l.value.resize()},100)})}),e.watch(()=>i.presetStyleId,a=>{l.value&&a&&(console.log("设置预设样式:",a),l.value.setPresetStyleId(a))}),e.watch(()=>i.logoPosition,a=>{l.value&&a&&(console.log("设置Logo位置:",a),l.value.setLogoPosition(a))}),e.watch(()=>i.copyrightControl,a=>{l.value&&a!==void 0&&(console.log("设置版权控件:",a),l.value.setCopyrightControl(a))}),e.watch(()=>i.locationControl,a=>{l.value&&a!==void 0&&(console.log("设置定位控件:",a),l.value.setLocationControl(a))}),e.watch(()=>i.navigationControl,a=>{l.value&&a!==void 0&&(console.log("设置导航控件:",a),l.value.setNavigationControl(a))}),e.watch(()=>i.rotateControl,a=>{l.value&&a!==void 0&&(console.log("设置旋转控件:",a),l.value.setRotateControl(a))}),e.watch(()=>i.scaleControl,a=>{l.value&&a!==void 0&&(console.log("设置比例尺控件:",a),l.value.setScaleControl(a))}),e.watch(()=>i.zoomControl,a=>{l.value&&a!==void 0&&(console.log("设置缩放控件:",a),l.value.setZoomControl(a))}),e.watch(()=>i.zoomSlider,a=>{l.value&&a!==void 0&&(console.log("设置缩放条:",a),l.value.setZoomSlider(a))}),e.watch(()=>i.sourceType,(a,S)=>{l.value&&a!==S&&(console.log("瓦片类型发生变化,重新初始化地图:",a),z())}),e.watch(()=>i.language,(a,S)=>{l.value&&a!==S&&(console.log("语言设置发生变化,重新初始化地图:",a),z())}),e.watch(()=>i.minZoom,(a,S)=>{l.value&&a!==S&&(console.log("最小缩放级别发生变化,重新初始化地图:",a),z())}),e.watch(()=>i.maxZoom,(a,S)=>{l.value&&a!==S&&(console.log("最大缩放级别发生变化,重新初始化地图:",a),z())});const X=()=>{l.value&&l.value.resize()};return e.onMounted(()=>{z(),window.addEventListener("resize",X)}),e.onUnmounted(()=>{window.removeEventListener("resize",X),l.value&&(l.value=void 0)}),o({map:l,getMap:()=>l.value,reload:z,eventHistory:C,currentCenter:h,currentZoom:v,currentHeading:g,clearEventHistory:B,markers:D,visibleMarkers:x,selectedMarker:m,markerCount:c,visibleMarkerCount:p,addMarker:k,addMarkers:W,removeMarker:V,removeMarkers:s,clearMarkers:t,updateMarker:r,getMarker:d,toggleMarkerVisibility:$,selectMarker:U,deselectMarker:H,fitMarkersToView:Cn,infoWindows:hn,visibleInfoWindows:vn,activeInfoWindow:$n,infoWindowCount:xn,visibleInfoWindowCount:In,addInfoWindow:Dn,openInfoWindow:Sn,closeInfoWindow:_n,closeAllInfoWindows:Tn,removeInfoWindow:Bn,clearInfoWindows:Wn,updateInfoWindow:zn,getInfoWindow:Ln,createInfoWindowForMarker:Un,showMarkerInfoWindow:G,hideMarkerInfoWindow:Pn,toggleInfoWindow:Zn,setInfoWindowContent:An,moveInfoWindow:Fn}),(a,S)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"mapContainer",ref:w,class:"huawei-map-container",style:e.normalizeStyle({width:a.width,height:a.height})},[u.value?(e.openBlock(),e.createElementBlock("div",le,S[0]||(S[0]=[e.createElementVNode("div",{class:"loading-spinner"},null,-1),e.createElementVNode("p",null,"地图加载中...",-1)]))):e.createCommentVNode("",!0),b.value?(e.openBlock(),e.createElementBlock("div",ae,[e.createElementVNode("p",null,e.toDisplayString(b.value),1),e.createElementVNode("button",{onClick:Rn,class:"retry-button"},"重试")])):e.createCommentVNode("",!0)],4))}}),L=(y,o)=>{const E=y.__vccOpts||y;for(const[i,f]of o)E[i]=f;return E},O=L(ie,[["__scopeId","data-v-eb288c91"]]),R={copyright:!1,location:!1,navigation:!1,rotate:!1,scale:!1,zoom:!0,zoomSlider:!1},A={logoPosition:"BOTTOM_LEFT",presetStyleId:"standard",opacity:1};function q(y){const o=e.ref({center:y?.center||T.defaultCenter,zoom:y?.zoom||T.defaultZoom,language:y?.language||T.defaultLanguage,sourceType:y?.sourceType||T.defaultSourceType,mapType:y?.mapType||"ROADMAP",minZoom:y?.minZoom||2,maxZoom:y?.maxZoom||20,controls:{...R,...y?.controls},style:{...A,...y?.style},apiKey:y?.apiKey||T.apiKey}),E=e.computed(()=>({center:o.value.center,zoom:o.value.zoom,language:o.value.language,sourceType:o.value.sourceType,mapType:o.value.mapType,minZoom:o.value.minZoom,maxZoom:o.value.maxZoom,copyrightControl:o.value.controls?.copyright,locationControl:o.value.controls?.location,navigationControl:o.value.controls?.navigation,rotateControl:o.value.controls?.rotate,scaleControl:o.value.controls?.scale,zoomControl:o.value.controls?.zoom,zoomSlider:o.value.controls?.zoomSlider,logoPosition:o.value.style?.logoPosition,presetStyleId:o.value.style?.presetStyleId}));return{config:o,hwMapOptions:E,updateConfig:g=>{o.value={...o.value,...g,controls:{...o.value.controls,...g.controls},style:{...o.value.style,...g.style}}},resetConfig:()=>{o.value={center:T.defaultCenter,zoom:T.defaultZoom,language:T.defaultLanguage,sourceType:T.defaultSourceType,mapType:"ROADMAP",minZoom:2,maxZoom:20,controls:{...R},style:{...A},apiKey:T.apiKey}},setCenter:g=>{o.value.center=g},setZoom:g=>{o.value.zoom=Math.max(o.value.minZoom||2,Math.min(o.value.maxZoom||20,g))},setMapType:g=>{o.value.mapType=g},setPresetStyle:g=>{o.value.style||(o.value.style={...A}),o.value.style.presetStyleId=g},toggleControl:(g,n)=>{o.value.controls||(o.value.controls={...R}),o.value.controls[g]=n!==void 0?n:!o.value.controls[g]},setOpacity:g=>{o.value.style||(o.value.style={...A}),o.value.style.opacity=Math.max(0,Math.min(1,g))},validateConfig:()=>{const g=[];return o.value.center?((o.value.center.lat<-90||o.value.center.lat>90)&&g.push("纬度必须在-90到90之间"),(o.value.center.lng<-180||o.value.center.lng>180)&&g.push("经度必须在-180到180之间")):g.push("地图中心点不能为空"),o.value.zoom!==void 0&&(o.value.zoom<(o.value.minZoom||2)||o.value.zoom>(o.value.maxZoom||20))&&g.push(`缩放级别必须在${o.value.minZoom||2}到${o.value.maxZoom||20}之间`),o.value.style?.opacity!==void 0&&(o.value.style.opacity<0||o.value.style.opacity>1)&&g.push("透明度必须在0到1之间"),{isValid:g.length===0,errors:g}},getConfigSummary:()=>({center:o.value.center,zoom:o.value.zoom,mapType:o.value.mapType,sourceType:o.value.sourceType,enabledControls:Object.entries(o.value.controls||{}).filter(([,g])=>g).map(([g])=>g),style:o.value.style})}}const se={class:"map-config-panel"},re={class:"config-section"},de={class:"config-group"},ce={class:"coordinate-inputs"},me={class:"input-group"},pe={class:"input-group"},fe={class:"config-group"},ge={class:"zoom-control"},ue=["min","max"],Ee={class:"zoom-value"},Ve={class:"config-group"},Ne={class:"config-group"},ke={class:"config-group"},be={class:"config-section"},ye={class:"controls-grid"},we={class:"control-item"},Ce={class:"control-item"},Me={class:"control-item"},he={class:"control-item"},ve={class:"control-item"},$e={class:"control-item"},xe={class:"control-item"},Ie={class:"config-section"},De={class:"config-group"},Se={class:"config-group"},_e={class:"config-group"},Te={class:"opacity-control"},Be={class:"opacity-value"},We={key:0,class:"validation-errors"},ze=L(e.defineComponent({__name:"MapConfigPanel",props:{modelValue:{default:()=>({})}},emits:["update:modelValue","config-change"],setup(y,{emit:o}){const E=y,i=o,{config:f,updateConfig:w,resetConfig:u,validateConfig:b}=q(E.modelValue),l=e.ref({...f.value}),M=e.computed(()=>b().errors);let C=!1;e.watch(l,g=>{C||(i("update:modelValue",g),i("config-change",g))},{deep:!0}),e.watch(()=>E.modelValue,g=>{g&&!C&&(C=!0,Object.assign(l.value,g),e.nextTick(()=>{C=!1}))},{deep:!0});const h=()=>{b().isValid&&(w(l.value),i("config-change",l.value))},v=()=>{u(),l.value={...f.value}};return(g,n)=>(e.openBlock(),e.createElementBlock("div",se,[e.createElementVNode("div",re,[n[28]||(n[28]=e.createElementVNode("h3",null,"基础配置",-1)),e.createElementVNode("div",de,[n[18]||(n[18]=e.createElementVNode("label",null,"地图中心点",-1)),e.createElementVNode("div",ce,[e.createElementVNode("div",me,[n[16]||(n[16]=e.createElementVNode("label",null,"纬度",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=N=>l.value.center.lat=N),type:"number",step:"0.000001",min:"-90",max:"90",class:"coordinate-input"},null,512),[[e.vModelText,l.value.center.lat,void 0,{number:!0}]])]),e.createElementVNode("div",pe,[n[17]||(n[17]=e.createElementVNode("label",null,"经度",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[1]||(n[1]=N=>l.value.center.lng=N),type:"number",step:"0.000001",min:"-180",max:"180",class:"coordinate-input"},null,512),[[e.vModelText,l.value.center.lng,void 0,{number:!0}]])])])]),e.createElementVNode("div",fe,[n[19]||(n[19]=e.createElementVNode("label",null,"缩放级别",-1)),e.createElementVNode("div",ge,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[2]||(n[2]=N=>l.value.zoom=N),type:"range",min:l.value.minZoom,max:l.value.maxZoom,class:"zoom-slider"},null,8,ue),[[e.vModelText,l.value.zoom,void 0,{number:!0}]]),e.createElementVNode("span",Ee,e.toDisplayString(l.value.zoom),1)])]),e.createElementVNode("div",Ve,[n[21]||(n[21]=e.createElementVNode("label",null,"地图类型",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[3]||(n[3]=N=>l.value.mapType=N),class:"select-input"},n[20]||(n[20]=[e.createElementVNode("option",{value:"ROADMAP"},"基础地图(道路、建筑)",-1),e.createElementVNode("option",{value:"TERRAIN"},"地形图(地形、海拔)",-1)]),512),[[e.vModelSelect,l.value.mapType]]),n[22]||(n[22]=e.createElementVNode("small",{class:"config-hint"},"切换地图类型会重新加载地图",-1))]),e.createElementVNode("div",Ne,[n[24]||(n[24]=e.createElementVNode("label",null,"瓦片类型",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[4]||(n[4]=N=>l.value.sourceType=N),class:"select-input"},n[23]||(n[23]=[e.createElementVNode("option",{value:"vector"},"矢量(清晰、快速)",-1),e.createElementVNode("option",{value:"raster"},"栅格(兼容性好)",-1)]),512),[[e.vModelSelect,l.value.sourceType]]),n[25]||(n[25]=e.createElementVNode("small",{class:"config-hint"},"矢量瓦片在高缩放级别更清晰",-1))]),e.createElementVNode("div",ke,[n[27]||(n[27]=e.createElementVNode("label",null,"语言",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[5]||(n[5]=N=>l.value.language=N),class:"select-input"},n[26]||(n[26]=[e.createElementVNode("option",{value:"zh"},"中文",-1),e.createElementVNode("option",{value:"en"},"English",-1)]),512),[[e.vModelSelect,l.value.language]])])]),e.createElementVNode("div",be,[n[36]||(n[36]=e.createElementVNode("h3",null,"控件配置",-1)),e.createElementVNode("div",ye,[e.createElementVNode("label",we,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[6]||(n[6]=N=>l.value.controls.copyright=N),type:"checkbox"},null,512),[[e.vModelCheckbox,l.value.controls.copyright]]),n[29]||(n[29]=e.createElementVNode("span",null,"版权信息",-1))]),e.createElementVNode("label",Ce,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[7]||(n[7]=N=>l.value.controls.location=N),type:"checkbox"},null,512),[[e.vModelCheckbox,l.value.controls.location]]),n[30]||(n[30]=e.createElementVNode("span",null,"定位按钮",-1))]),e.createElementVNode("label",Me,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[8]||(n[8]=N=>l.value.controls.navigation=N),type:"checkbox"},null,512),[[e.vModelCheckbox,l.value.controls.navigation]]),n[31]||(n[31]=e.createElementVNode("span",null,"导航按钮",-1))]),e.createElementVNode("label",he,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[9]||(n[9]=N=>l.value.controls.rotate=N),type:"checkbox"},null,512),[[e.vModelCheckbox,l.value.controls.rotate]]),n[32]||(n[32]=e.createElementVNode("span",null,"指北针",-1))]),e.createElementVNode("label",ve,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[10]||(n[10]=N=>l.value.controls.scale=N),type:"checkbox"},null,512),[[e.vModelCheckbox,l.value.controls.scale]]),n[33]||(n[33]=e.createElementVNode("span",null,"比例尺",-1))]),e.createElementVNode("label",$e,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[11]||(n[11]=N=>l.value.controls.zoom=N),type:"checkbox"},null,512),[[e.vModelCheckbox,l.value.controls.zoom]]),n[34]||(n[34]=e.createElementVNode("span",null,"缩放按钮",-1))]),e.createElementVNode("label",xe,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[12]||(n[12]=N=>l.value.controls.zoomSlider=N),type:"checkbox"},null,512),[[e.vModelCheckbox,l.value.controls.zoomSlider]]),n[35]||(n[35]=e.createElementVNode("span",null,"缩放条",-1))])])]),e.createElementVNode("div",Ie,[n[42]||(n[42]=e.createElementVNode("h3",null,"样式配置",-1)),e.createElementVNode("div",De,[n[38]||(n[38]=e.createElementVNode("label",null,"预设样式",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[13]||(n[13]=N=>l.value.style.presetStyleId=N),class:"select-input"},n[37]||(n[37]=[e.createElementVNode("option",{value:"standard"},"标准",-1),e.createElementVNode("option",{value:"night"},"夜间",-1),e.createElementVNode("option",{value:"simple"},"简洁",-1)]),512),[[e.vModelSelect,l.value.style.presetStyleId]])]),e.createElementVNode("div",Se,[n[40]||(n[40]=e.createElementVNode("label",null,"Logo位置",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[14]||(n[14]=N=>l.value.style.logoPosition=N),class:"select-input"},n[39]||(n[39]=[e.createElementVNode("option",{value:"BOTTOM_LEFT"},"左下",-1),e.createElementVNode("option",{value:"BOTTOM_RIGHT"},"右下",-1),e.createElementVNode("option",{value:"TOP_LEFT"},"左上",-1),e.createElementVNode("option",{value:"TOP_RIGHT"},"右上",-1)]),512),[[e.vModelSelect,l.value.style.logoPosition]])]),e.createElementVNode("div",_e,[n[41]||(n[41]=e.createElementVNode("label",null,"透明度",-1)),e.createElementVNode("div",Te,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[15]||(n[15]=N=>l.value.style.opacity=N),type:"range",min:"0",max:"1",step:"0.1",class:"opacity-slider"},null,512),[[e.vModelText,l.value.style.opacity,void 0,{number:!0}]]),e.createElementVNode("span",Be,e.toDisplayString(((l.value.style?.opacity||1)*100).toFixed(0))+"%",1)])])]),e.createElementVNode("div",{class:"config-actions"},[e.createElementVNode("button",{onClick:v,class:"action-button secondary"}," 重置默认 "),e.createElementVNode("button",{onClick:h,class:"action-button primary"}," 应用配置 ")]),M.value.length>0?(e.openBlock(),e.createElementBlock("div",We,[n[43]||(n[43]=e.createElementVNode("h4",null,"配置错误:",-1)),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,N=>(e.openBlock(),e.createElementBlock("li",{key:N},e.toDisplayString(N),1))),128))])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-0b9254b5"]]),Le={class:"map-event-monitor"},Ue={class:"monitor-header"},Pe={class:"monitor-controls"},Ze={class:"current-state"},Ae={class:"state-grid"},Fe={class:"state-item"},Oe={key:0},Re={key:1},He={class:"state-item"},Ke={class:"state-item"},je={class:"event-filters"},Je={class:"filter-checkboxes"},Ye=["value"],qe={class:"event-list-container"},Ge={class:"event-header"},Xe={class:"event-type"},Qe={class:"event-time"},et={key:0,class:"event-data"},tt={key:0,class:"data-item"},ot={key:1,class:"data-item"},nt={key:2,class:"data-item"},lt={key:0,class:"no-events"},at=L(e.defineComponent({__name:"MapEventMonitor",props:{eventHistory:{},currentCenter:{},currentZoom:{},currentHeading:{}},emits:["clear-events"],setup(y,{emit:o}){const E=y,i=o,f=e.ref(),w=e.ref(!0),u=e.ref(["click","dblclick","contextmenu","centerChanged","zoomChanged"]),b=["click","dblclick","contextmenu","mousedown","mouseup","movestart","moveend","centerChanged","zoomChanged","headingChanged"],l={click:"单击",dblclick:"双击",contextmenu:"右键",mousedown:"鼠标按下",mouseup:"鼠标松开",movestart:"开始移动",moveend:"结束移动",centerChanged:"中心点变化",zoomChanged:"缩放变化",headingChanged:"方向变化"},M=e.computed(()=>E.eventHistory.filter(g=>u.value.includes(g.type))),C=()=>{i("clear-events")},h=()=>{w.value=!w.value},v=g=>{const n=new Date(g);return n.toLocaleTimeString("zh-CN",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})+"."+n.getMilliseconds().toString().padStart(3,"0")};return e.watch(M,async()=>{w.value&&f.value&&(await e.nextTick(),f.value.scrollTop=0)}),(g,n)=>(e.openBlock(),e.createElementBlock("div",Le,[e.createElementVNode("div",Ue,[n[1]||(n[1]=e.createElementVNode("h3",null,"事件监控",-1)),e.createElementVNode("div",Pe,[e.createElementVNode("button",{onClick:C,class:"clear-button"}," 清空记录 "),e.createElementVNode("button",{onClick:h,class:e.normalizeClass(["toggle-button",{active:w.value}])}," 自动滚动 ",2)])]),e.createElementVNode("div",Ze,[n[5]||(n[5]=e.createElementVNode("h4",null,"当前状态",-1)),e.createElementVNode("div",Ae,[e.createElementVNode("div",Fe,[n[2]||(n[2]=e.createElementVNode("label",null,"中心点:",-1)),g.currentCenter?(e.openBlock(),e.createElementBlock("span",Oe,e.toDisplayString(g.currentCenter.lat.toFixed(6))+", "+e.toDisplayString(g.currentCenter.lng.toFixed(6)),1)):(e.openBlock(),e.createElementBlock("span",Re,"-"))]),e.createElementVNode("div",He,[n[3]||(n[3]=e.createElementVNode("label",null,"缩放级别:",-1)),e.createElementVNode("span",null,e.toDisplayString(g.currentZoom||"-"),1)]),e.createElementVNode("div",Ke,[n[4]||(n[4]=e.createElementVNode("label",null,"方向:",-1)),e.createElementVNode("span",null,e.toDisplayString(g.currentHeading?g.currentHeading.toFixed(2)+"°":"-"),1)])])]),e.createElementVNode("div",je,[n[6]||(n[6]=e.createElementVNode("h4",null,"事件过滤",-1)),e.createElementVNode("div",Je,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(b,N=>e.createElementVNode("label",{key:N,class:"filter-checkbox"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=B=>u.value=B),value:N,type:"checkbox"},null,8,Ye),[[e.vModelCheckbox,u.value]]),e.createElementVNode("span",null,e.toDisplayString(l[N]),1)])),64))])]),e.createElementVNode("div",qe,[e.createElementVNode("h4",null,"事件记录 ("+e.toDisplayString(M.value.length)+")",1),e.createElementVNode("div",{ref_key:"eventListRef",ref:f,class:e.normalizeClass(["event-list",{"auto-scroll":w.value}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,N=>(e.openBlock(),e.createElementBlock("div",{key:N.id,class:e.normalizeClass(["event-item",`event-${N.type}`])},[e.createElementVNode("div",Ge,[e.createElementVNode("span",Xe,e.toDisplayString(l[N.type]||N.type),1),e.createElementVNode("span",Qe,e.toDisplayString(v(N.timestamp)),1)]),N.data?(e.openBlock(),e.createElementBlock("div",et,[N.data.latLng?(e.openBlock(),e.createElementBlock("span",tt," 坐标: "+e.toDisplayString(N.data.latLng.lat.toFixed(6))+", "+e.toDisplayString(N.data.latLng.lng.toFixed(6)),1)):N.data.lat!==void 0?(e.openBlock(),e.createElementBlock("span",ot," 中心点: "+e.toDisplayString(N.data.lat.toFixed(6))+", "+e.toDisplayString(N.data.lng.toFixed(6)),1)):typeof N.data=="number"?(e.openBlock(),e.createElementBlock("span",nt," 值: "+e.toDisplayString(N.data),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],2))),128)),M.value.length===0?(e.openBlock(),e.createElementBlock("div",lt," 暂无事件记录 ")):e.createCommentVNode("",!0)],2)])]))}}),[["__scopeId","data-v-3f45f002"]]),it={class:"marker-panel"},st={class:"panel-header"},rt={class:"panel-stats"},dt={class:"panel-actions"},ct=["disabled"],mt=["disabled"],pt={key:0,class:"add-form"},ft={class:"form-group"},gt={class:"form-group"},ut={class:"form-row"},Et={class:"form-group"},Vt={class:"form-group"},Nt={class:"form-row"},kt={class:"form-group"},bt={class:"form-group"},yt={class:"form-options"},wt={class:"checkbox-label"},Ct={class:"select-group"},Mt={class:"marker-list"},ht={key:0,class:"empty-state"},vt={key:1,class:"marker-items"},$t=["onClick"],xt={class:"marker-info"},It={class:"marker-title"},Dt={class:"marker-position"},St={key:0,class:"marker-content"},_t={class:"marker-actions"},Tt=["onClick","title"],Bt=["onClick"],Wt=["onClick"],zt={key:1,class:"edit-modal"},Lt={class:"modal-content"},Ut={class:"modal-body"},Pt={class:"form-group"},Zt={class:"form-group"},At={class:"form-row"},Ft={class:"form-group"},Ot={class:"form-group"},Rt={class:"form-options"},Ht={class:"checkbox-label"},Kt={class:"checkbox-label"},jt=L(e.defineComponent({__name:"MarkerPanel",props:{markers:{},selectedMarker:{},markerCount:{},visibleMarkerCount:{},mapCenter:{}},emits:["add-marker","remove-marker","update-marker","select-marker","toggle-visibility","clear-markers","fit-to-view"],setup(y,{emit:o}){const E=y,i=o,f=e.ref(!1),w=e.ref(null),u=e.ref({title:"",content:"",position:{lat:0,lng:0},iconUrl:"",labelText:"",draggable:!1,animation:""}),b=e.ref({}),l=()=>{u.value={title:"",content:"",position:{lat:E.mapCenter?.lat||0,lng:E.mapCenter?.lng||0},iconUrl:"",labelText:"",draggable:!1,animation:""}},M=()=>{const x={title:u.value.title||void 0,content:u.value.content||void 0,position:u.value.position,draggable:u.value.draggable,animation:u.value.animation||null};u.value.iconUrl&&(x.icon=u.value.iconUrl),u.value.labelText&&(x.label=u.value.labelText),i("add-marker",x),l(),f.value=!1},C=()=>{E.mapCenter&&(u.value.position={...E.mapCenter},M())},h=x=>{confirm("确定要删除这个标记吗?")&&i("remove-marker",x)},v=()=>{confirm("确定要清空所有标记吗?")&&i("clear-markers")},g=x=>{i("toggle-visibility",x)},n=x=>{i("select-marker",x)},N=()=>{i("fit-to-view")},B=x=>{w.value=x,b.value={...x}},I=()=>{w.value&&b.value&&(i("update-marker",w.value.id,b.value),D())},D=()=>{w.value=null,b.value={}};return l(),(x,m)=>(e.openBlock(),e.createElementBlock("div",it,[e.createElementVNode("div",st,[m[15]||(m[15]=e.createElementVNode("h3",null,"标记管理",-1)),e.createElementVNode("div",rt,[e.createElementVNode("span",null,"总数: "+e.toDisplayString(x.markerCount),1),e.createElementVNode("span",null,"可见: "+e.toDisplayString(x.visibleMarkerCount),1)])]),e.createElementVNode("div",dt,[e.createElementVNode("button",{onClick:m[0]||(m[0]=c=>f.value=!f.value),class:"action-btn primary"},e.toDisplayString(f.value?"取消添加":"添加标记"),1),e.createElementVNode("button",{onClick:v,class:"action-btn danger",disabled:x.markerCount===0}," 清空所有 ",8,ct),e.createElementVNode("button",{onClick:N,class:"action-btn secondary",disabled:x.visibleMarkerCount===0}," 适应视图 ",8,mt)]),f.value?(e.openBlock(),e.createElementBlock("div",pt,[m[25]||(m[25]=e.createElementVNode("h4",null,"添加新标记",-1)),e.createElementVNode("div",ft,[m[16]||(m[16]=e.createElementVNode("label",null,"标题:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[1]||(m[1]=c=>u.value.title=c),type:"text",placeholder:"标记标题"},null,512),[[e.vModelText,u.value.title]])]),e.createElementVNode("div",gt,[m[17]||(m[17]=e.createElementVNode("label",null,"描述:",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":m[2]||(m[2]=c=>u.value.content=c),placeholder:"标记描述"},null,512),[[e.vModelText,u.value.content]])]),e.createElementVNode("div",ut,[e.createElementVNode("div",Et,[m[18]||(m[18]=e.createElementVNode("label",null,"纬度:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[3]||(m[3]=c=>u.value.position.lat=c),type:"number",step:"0.000001"},null,512),[[e.vModelText,u.value.position.lat,void 0,{number:!0}]])]),e.createElementVNode("div",Vt,[m[19]||(m[19]=e.createElementVNode("label",null,"经度:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[4]||(m[4]=c=>u.value.position.lng=c),type:"number",step:"0.000001"},null,512),[[e.vModelText,u.value.position.lng,void 0,{number:!0}]])])]),e.createElementVNode("div",Nt,[e.createElementVNode("div",kt,[m[20]||(m[20]=e.createElementVNode("label",null,"图标URL:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[5]||(m[5]=c=>u.value.iconUrl=c),type:"text",placeholder:"图标地址(可选)"},null,512),[[e.vModelText,u.value.iconUrl]])]),e.createElementVNode("div",bt,[m[21]||(m[21]=e.createElementVNode("label",null,"标签文本:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[6]||(m[6]=c=>u.value.labelText=c),type:"text",placeholder:"标签文本(可选)"},null,512),[[e.vModelText,u.value.labelText]])])]),e.createElementVNode("div",yt,[e.createElementVNode("label",wt,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[7]||(m[7]=c=>u.value.draggable=c),type:"checkbox"},null,512),[[e.vModelCheckbox,u.value.draggable]]),m[22]||(m[22]=e.createElementVNode("span",null,"可拖拽",-1))]),e.createElementVNode("div",Ct,[m[24]||(m[24]=e.createElementVNode("label",null,"动画:",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":m[8]||(m[8]=c=>u.value.animation=c)},m[23]||(m[23]=[e.createElementVNode("option",{value:""},"无动画",-1),e.createElementVNode("option",{value:"DROP"},"下落",-1),e.createElementVNode("option",{value:"BOUNCE"},"弹跳",-1)]),512),[[e.vModelSelect,u.value.animation]])])]),e.createElementVNode("div",{class:"form-actions"},[e.createElementVNode("button",{onClick:M,class:"action-btn primary"},"添加"),e.createElementVNode("button",{onClick:C,class:"action-btn secondary"},"在中心添加")])])):e.createCommentVNode("",!0),e.createElementVNode("div",Mt,[m[26]||(m[26]=e.createElementVNode("h4",null,"标记列表",-1)),x.markers.length===0?(e.openBlock(),e.createElementBlock("div",ht," 暂无标记 ")):(e.openBlock(),e.createElementBlock("div",vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.markers,c=>(e.openBlock(),e.createElementBlock("div",{key:c.id,class:e.normalizeClass(["marker-item",{selected:x.selectedMarker?.id===c.id,hidden:c.visible===!1}]),onClick:p=>n(c.id)},[e.createElementVNode("div",xt,[e.createElementVNode("div",It,e.toDisplayString(c.title||`标记 ${c.id.slice(-6)}`),1),e.createElementVNode("div",Dt,e.toDisplayString(c.position.lat.toFixed(6))+", "+e.toDisplayString(c.position.lng.toFixed(6)),1),c.content?(e.openBlock(),e.createElementBlock("div",St,e.toDisplayString(c.content),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",_t,[e.createElementVNode("button",{onClick:e.withModifiers(p=>g(c.id),["stop"]),class:"icon-btn",title:c.visible===!1?"显示":"隐藏"},e.toDisplayString(c.visible===!1?"👁️":"🙈"),9,Tt),e.createElementVNode("button",{onClick:e.withModifiers(p=>B(c),["stop"]),class:"icon-btn",title:"编辑"}," ✏️ ",8,Bt),e.createElementVNode("button",{onClick:e.withModifiers(p=>h(c.id),["stop"]),class:"icon-btn danger",title:"删除"}," 🗑️ ",8,Wt)])],10,$t))),128))]))]),w.value?(e.openBlock(),e.createElementBlock("div",zt,[e.createElementVNode("div",Lt,[e.createElementVNode("div",{class:"modal-header"},[m[27]||(m[27]=e.createElementVNode("h4",null,"编辑标记",-1)),e.createElementVNode("button",{onClick:D,class:"close-btn"},"×")]),e.createElementVNode("div",Ut,[e.createElementVNode("div",Pt,[m[28]||(m[28]=e.createElementVNode("label",null,"标题:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[9]||(m[9]=c=>b.value.title=c),type:"text"},null,512),[[e.vModelText,b.value.title]])]),e.createElementVNode("div",Zt,[m[29]||(m[29]=e.createElementVNode("label",null,"描述:",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":m[10]||(m[10]=c=>b.value.content=c)},null,512),[[e.vModelText,b.value.content]])]),e.createElementVNode("div",At,[e.createElementVNode("div",Ft,[m[30]||(m[30]=e.createElementVNode("label",null,"纬度:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[11]||(m[11]=c=>b.value.position.lat=c),type:"number",step:"0.000001"},null,512),[[e.vModelText,b.value.position.lat,void 0,{number:!0}]])]),e.createElementVNode("div",Ot,[m[31]||(m[31]=e.createElementVNode("label",null,"经度:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[12]||(m[12]=c=>b.value.position.lng=c),type:"number",step:"0.000001"},null,512),[[e.vModelText,b.value.position.lng,void 0,{number:!0}]])])]),e.createElementVNode("div",Rt,[e.createElementVNode("label",Ht,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[13]||(m[13]=c=>b.value.draggable=c),type:"checkbox"},null,512),[[e.vModelCheckbox,b.value.draggable]]),m[32]||(m[32]=e.createElementVNode("span",null,"可拖拽",-1))]),e.createElementVNode("label",Kt,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[14]||(m[14]=c=>b.value.visible=c),type:"checkbox"},null,512),[[e.vModelCheckbox,b.value.visible]]),m[33]||(m[33]=e.createElementVNode("span",null,"可见",-1))])])]),e.createElementVNode("div",{class:"modal-actions"},[e.createElementVNode("button",{onClick:I,class:"action-btn primary"},"保存"),e.createElementVNode("button",{onClick:D,class:"action-btn secondary"},"取消")])])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-be51a63c"]]),Jt={class:"infowindow-panel"},Yt={class:"panel-header"},qt={class:"panel-stats"},Gt={key:0},Xt={class:"panel-actions"},Qt=["disabled"],eo=["disabled"],to={key:0,class:"add-form"},oo={class:"form-group"},no={class:"form-group"},lo={class:"form-row"},ao={class:"form-group"},io={class:"form-group"},so={class:"form-row"},ro={class:"form-group"},co={class:"form-group"},mo={class:"form-options"},po={class:"checkbox-label"},fo={class:"select-group"},go=["value"],uo={class:"infowindow-list"},Eo={key:0,class:"empty-state"},Vo={key:1,class:"infowindow-items"},No=["onClick"],ko={class:"infowindow-info"},bo={class:"infowindow-title"},yo={class:"infowindow-position"},wo={class:"infowindow-content"},Co={key:0,class:"infowindow-marker"},Mo={class:"infowindow-actions"},ho=["onClick","title"],vo=["onClick"],$o=["onClick"],xo={key:1,class:"edit-modal"},Io={class:"modal-content"},Do={class:"modal-body"},So={class:"form-group"},_o={class:"form-group"},To={class:"form-row"},Bo={class:"form-group"},Wo={class:"form-group"},zo={class:"form-options"},Lo={class:"checkbox-label"},Uo={class:"checkbox-label"},Po=L(e.defineComponent({__name:"InfoWindowPanel",props:{infoWindows:{},activeInfoWindow:{},infoWindowCount:{},visibleInfoWindowCount:{},markers:{},mapCenter:{}},emits:["add-infowindow","remove-infowindow","update-infowindow","open-infowindow","close-infowindow","close-all-infowindows","clear-infowindows","toggle-infowindow"],setup(y,{emit:o}){const E=y,i=o,f=e.ref(!1),w=e.ref(null),u=e.ref({title:"",content:"",position:{lat:0,lng:0},offset:[0,0],closable:!0,markerId:""}),b=e.ref({}),l=()=>{u.value={title:"",content:"",position:{lat:E.mapCenter?.lat||0,lng:E.mapCenter?.lng||0},offset:[0,0],closable:!0,markerId:""}},M=()=>{const c={title:u.value.title||void 0,content:u.value.content,position:u.value.position,offset:u.value.offset,closable:u.value.closable,markerId:u.value.markerId||void 0};i("add-infowindow",c),l(),f.value=!1},C=()=>{E.mapCenter&&(u.value.position={...E.mapCenter},M())},h=c=>{confirm("确定要删除这个信息窗吗?")&&i("remove-infowindow",c)},v=()=>{confirm("确定要清空所有信息窗吗?")&&i("clear-infowindows")},g=()=>{i("close-all-infowindows")},n=c=>{i("toggle-infowindow",c)},N=c=>{c.visible===!1&&i("open-infowindow",c.id)},B=c=>{w.value=c,b.value={...c}},I=()=>{w.value&&b.value&&(i("update-infowindow",w.value.id,b.value),D())},D=()=>{w.value=null,b.value={}},x=c=>typeof c=="string"?c.length>50?c.substring(0,50)+"...":c:"[HTML内容]",m=c=>E.markers.find(k=>k.id===c)?.title||`标记 ${c.slice(-6)}`;return l(),(c,p)=>(e.openBlock(),e.createElementBlock("div",Jt,[e.createElementVNode("div",Yt,[p[15]||(p[15]=e.createElementVNode("h3",null,"信息窗管理",-1)),e.createElementVNode("div",qt,[e.createElementVNode("span",null,"总数: "+e.toDisplayString(c.infoWindowCount),1),e.createElementVNode("span",null,"可见: "+e.toDisplayString(c.visibleInfoWindowCount),1),c.activeInfoWindow?(e.openBlock(),e.createElementBlock("span",Gt,"活动: "+e.toDisplayString(c.activeInfoWindow.title||c.activeInfoWindow.id.slice(-6)),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Xt,[e.createElementVNode("button",{onClick:p[0]||(p[0]=k=>f.value=!f.value),class:"action-btn primary"},e.toDisplayString(f.value?"取消添加":"添加信息窗"),1),e.createElementVNode("button",{onClick:g,class:"action-btn secondary",disabled:c.visibleInfoWindowCount===0}," 关闭所有 ",8,Qt),e.createElementVNode("button",{onClick:v,class:"action-btn danger",disabled:c.infoWindowCount===0}," 清空所有 ",8,eo)]),f.value?(e.openBlock(),e.createElementBlock("div",to,[p[25]||(p[25]=e.createElementVNode("h4",null,"添加新信息窗",-1)),e.createElementVNode("div",oo,[p[16]||(p[16]=e.createElementVNode("label",null,"标题:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[1]||(p[1]=k=>u.value.title=k),type:"text",placeholder:"信息窗标题"},null,512),[[e.vModelText,u.value.title]])]),e.createElementVNode("div",no,[p[17]||(p[17]=e.createElementVNode("label",null,"内容:",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":p[2]||(p[2]=k=>u.value.content=k),placeholder:"信息窗内容",rows:"3"},null,512),[[e.vModelText,u.value.content]])]),e.createElementVNode("div",lo,[e.createElementVNode("div",ao,[p[18]||(p[18]=e.createElementVNode("label",null,"纬度:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[3]||(p[3]=k=>u.value.position.lat=k),type:"number",step:"0.000001"},null,512),[[e.vModelText,u.value.position.lat,void 0,{number:!0}]])]),e.createElementVNode("div",io,[p[19]||(p[19]=e.createElementVNode("label",null,"经度:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[4]||(p[4]=k=>u.value.position.lng=k),type:"number",step:"0.000001"},null,512),[[e.vModelText,u.value.position.lng,void 0,{number:!0}]])])]),e.createElementVNode("div",so,[e.createElementVNode("div",ro,[p[20]||(p[20]=e.createElementVNode("label",null,"X偏移:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[5]||(p[5]=k=>u.value.offset[0]=k),type:"number"},null,512),[[e.vModelText,u.value.offset[0],void 0,{number:!0}]])]),e.createElementVNode("div",co,[p[21]||(p[21]=e.createElementVNode("label",null,"Y偏移:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[6]||(p[6]=k=>u.value.offset[1]=k),type:"number"},null,512),[[e.vModelText,u.value.offset[1],void 0,{number:!0}]])])]),e.createElementVNode("div",mo,[e.createElementVNode("label",po,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[7]||(p[7]=k=>u.value.closable=k),type:"checkbox"},null,512),[[e.vModelCheckbox,u.value.closable]]),p[22]||(p[22]=e.createElementVNode("span",null,"可关闭",-1))]),e.createElementVNode("div",fo,[p[24]||(p[24]=e.createElementVNode("label",null,"关联标记:",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":p[8]||(p[8]=k=>u.value.markerId=k)},[p[23]||(p[23]=e.createElementVNode("option",{value:""},"无关联",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.markers,k=>(e.openBlock(),e.createElementBlock("option",{key:k.id,value:k.id},e.toDisplayString(k.title||`标记 ${k.id.slice(-6)}`),9,go))),128))],512),[[e.vModelSelect,u.value.markerId]])])]),e.createElementVNode("div",{class:"form-actions"},[e.createElementVNode("button",{onClick:M,class:"action-btn primary"},"添加"),e.createElementVNode("button",{onClick:C,class:"action-btn secondary"},"在中心添加")])])):e.createCommentVNode("",!0),e.createElementVNode("div",uo,[p[26]||(p[26]=e.createElementVNode("h4",null,"信息窗列表",-1)),c.infoWindows.length===0?(e.openBlock(),e.createElementBlock("div",Eo," 暂无信息窗 ")):(e.openBlock(),e.createElementBlock("div",Vo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.infoWindows,k=>(e.openBlock(),e.createElementBlock("div",{key:k.id,class:e.normalizeClass(["infowindow-item",{active:c.activeInfoWindow?.id===k.id,hidden:k.visible===!1}]),onClick:W=>N(k)},[e.createElementVNode("div",ko,[e.createElementVNode("div",bo,e.toDisplayString(k.title||`信息窗 ${k.id.slice(-6)}`),1),e.createElementVNode("div",yo,e.toDisplayString(k.position.lat.toFixed(6))+", "+e.toDisplayString(k.position.lng.toFixed(6)),1),e.createElementVNode("div",wo,e.toDisplayString(x(k.content)),1),k.markerId?(e.openBlock(),e.createElementBlock("div",Co," 关联标记: "+e.toDisplayString(m(k.markerId)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Mo,[e.createElementVNode("button",{onClick:e.withModifiers(W=>n(k.id),["stop"]),class:"icon-btn",title:k.visible===!1?"显示":"隐藏"},e.toDisplayString(k.visible===!1?"👁️":"🙈"),9,ho),e.createElementVNode("button",{onClick:e.withModifiers(W=>B(k),["stop"]),class:"icon-btn",title:"编辑"}," ✏️ ",8,vo),e.createElementVNode("button",{onClick:e.withModifiers(W=>h(k.id),["stop"]),class:"icon-btn danger",title:"删除"}," 🗑️ ",8,$o)])],10,No))),128))]))]),w.value?(e.openBlock(),e.createElementBlock("div",xo,[e.createElementVNode("div",Io,[e.createElementVNode("div",{class:"modal-header"},[p[27]||(p[27]=e.createElementVNode("h4",null,"编辑信息窗",-1)),e.createElementVNode("button",{onClick:D,class:"close-btn"},"×")]),e.createElementVNode("div",Do,[e.createElementVNode("div",So,[p[28]||(p[28]=e.createElementVNode("label",null,"标题:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[9]||(p[9]=k=>b.value.title=k),type:"text"},null,512),[[e.vModelText,b.value.title]])]),e.createElementVNode("div",_o,[p[29]||(p[29]=e.createElementVNode("label",null,"内容:",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":p[10]||(p[10]=k=>b.value.content=k),rows:"4"},null,512),[[e.vModelText,b.value.content]])]),e.createElementVNode("div",To,[e.createElementVNode("div",Bo,[p[30]||(p[30]=e.createElementVNode("label",null,"纬度:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[11]||(p[11]=k=>b.value.position.lat=k),type:"number",step:"0.000001"},null,512),[[e.vModelText,b.value.position.lat,void 0,{number:!0}]])]),e.createElementVNode("div",Wo,[p[31]||(p[31]=e.createElementVNode("label",null,"经度:",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[12]||(p[12]=k=>b.value.position.lng=k),type:"number",step:"0.000001"},null,512),[[e.vModelText,b.value.position.lng,void 0,{number:!0}]])])]),e.createElementVNode("div",zo,[e.createElementVNode("label",Lo,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[13]||(p[13]=k=>b.value.closable=k),type:"checkbox"},null,512),[[e.vModelCheckbox,b.value.closable]]),p[32]||(p[32]=e.createElementVNode("span",null,"可关闭",-1))]),e.createElementVNode("label",Uo,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[14]||(p[14]=k=>b.value.visible=k),type:"checkbox"},null,512),[[e.vModelCheckbox,b.value.visible]]),p[33]||(p[33]=e.createElementVNode("span",null,"可见",-1))])])]),e.createElementVNode("div",{class:"modal-actions"},[e.createElementVNode("button",{onClick:I,class:"action-btn primary"},"保存"),e.createElementVNode("button",{onClick:D,class:"action-btn secondary"},"取消")])])])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-63115bb4"]]),Zo={class:"basic-example"},Ao={class:"example-container"},Fo={class:"info-panel"},Oo={class:"log-container"},Ro={class:"log-time"},Ho={class:"log-message"},Ko=L(e.defineComponent({__name:"BasicExample",setup(y){const o=e.ref(),E=e.ref([]),i=C=>{const h=new Date().toLocaleTimeString();E.value.unshift({time:h,message:C}),E.value.length>20&&(E.value=E.value.slice(0,20))},f=C=>{i("地图加载完成"),console.log("地图实例:",C)},w=C=>{const h=C.coordinate[0],v=C.coordinate[1];i(`地图点击: ${v.toFixed(6)}, ${h.toFixed(6)}`)},u=()=>{if(!o.value)return;const C=39.9042+(Math.random()-.5)*.1,h=116.4074+(Math.random()-.5)*.1,v=o.value.addMarker({position:{lat:C,lng:h},title:`随机标记 ${Date.now()}`,content:`这是一个随机生成的标记,位置: ${C.toFixed(6)}, ${h.toFixed(6)}`,draggable:!0,animation:Math.random()>.5?"DROP":"BOUNCE"});i(`添加标记: ${v}`)},b=()=>{if(!o.value)return;const C=39.9042+(Math.random()-.5)*.05,h=116.4074+(Math.random()-.5)*.05,v=o.value.addInfoWindow({position:{lat:C,lng:h},content:`
      <div style="padding: 10px; max-width: 200px;">
        <h4 style="margin: 0 0 8px 0; color: #333;">信息窗示例</h4>
        <p style="margin: 0; font-size: 14px; color: #666;">
          这是一个信息窗示例,位置: ${C.toFixed(4)}, ${h.toFixed(4)}
        </p>
        <p style="margin: 8px 0 0 0; font-size: 12px; color: #999;">
          点击时间: ${new Date().toLocaleString()}
        </p>
      </div>
    `,closable:!0});o.value.openInfoWindow(v),i(`添加信息窗: ${v}`)},l=()=>{if(!o.value)return;const C=o.value.clearMarkers(),h=o.value.clearInfoWindows();i(`清空 ${C} 个标记和 ${h} 个信息窗`)},M=()=>{if(!o.value)return;const C=o.value.fitMarkersToView();i(C?"已适应所有标记到视图":"没有可见的标记")};return(C,h)=>(e.openBlock(),e.createElementBlock("div",Zo,[h[2]||(h[2]=e.createElementVNode("h2",null,"基础地图示例",-1)),h[3]||(h[3]=e.createElementVNode("p",null,"这是一个简单的华为地图组件使用示例",-1)),e.createElementVNode("div",Ao,[e.createVNode(O,{ref_key:"mapRef",ref:o,center:{lat:39.9042,lng:116.4074},zoom:10,width:"100%",height:"400px","zoom-control":!0,"scale-control":!0,"location-control":!0,onMapReady:f,onMapClick:w},null,512)]),e.createElementVNode("div",{class:"controls"},[h[0]||(h[0]=e.createElementVNode("h3",null,"地图控制",-1)),e.createElementVNode("div",{class:"control-buttons"},[e.createElementVNode("button",{onClick:u,class:"btn primary"},"添加随机标记"),e.createElementVNode("button",{onClick:b,class:"btn secondary"},"添加信息窗"),e.createElementVNode("button",{onClick:l,class:"btn danger"},"清空所有"),e.createElementVNode("button",{onClick:M,class:"btn info"},"适应视图")])]),e.createElementVNode("div",Fo,[h[1]||(h[1]=e.createElementVNode("h3",null,"操作日志",-1)),e.createElementVNode("div",Oo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,(v,g)=>(e.openBlock(),e.createElementBlock("div",{key:g,class:"log-item"},[e.createElementVNode("span",Ro,e.toDisplayString(v.time),1),e.createElementVNode("span",Ho,e.toDisplayString(v.message),1)]))),128))])])]))}}),[["__scopeId","data-v-234a828f"]]),jo={class:"advanced-example"},Jo={class:"example-layout"},Yo={class:"map-container"},qo={class:"control-panel"},Go={class:"section"},Xo={class:"form-group"},Qo={class:"form-group"},en={class:"form-group"},tn={class:"section"},on={class:"preset-buttons"},nn=["onClick"],ln={class:"section"},an={class:"stats"},sn={class:"stat-item"},rn={class:"stat-value"},dn={class:"stat-item"},cn={class:"stat-value"},mn={class:"stat-item"},pn={class:"stat-value"},fn={class:"stat-item"},gn={class:"stat-value"},un={class:"event-log"},En={class:"log-controls"},Vn={class:"checkbox-label"},Nn={class:"log-time"},kn={class:"log-type"},bn={class:"log-message"},yn=L(e.defineComponent({__name:"AdvancedExample",setup(y){const o=e.ref(),E=e.ref(),i=e.ref({lat:39.9042,lng:116.4074}),f=e.ref(10),w=e.ref("zh"),u=e.ref("raster"),b=e.ref("ROADMAP"),l=e.ref(!0),M=e.ref([]),C=[{name:"北京",lat:39.9042,lng:116.4074},{name:"上海",lat:31.2304,lng:121.4737},{name:"广州",lat:23.1291,lng:113.2644},{name:"深圳",lat:22.5431,lng:114.0579},{name:"杭州",lat:30.2741,lng:120.1551},{name:"南京",lat:32.0603,lng:118.7969}],h=e.computed(()=>o.value?.markerCount||0),v=e.computed(()=>o.value?.infoWindowCount||0),g=(s,t)=>{const r=new Date().toLocaleTimeString();M.value.unshift({time:r,type:s,message:t}),M.value.length>100&&(M.value=M.value.slice(0,100)),l.value&&e.nextTick(()=>{E.value&&(E.value.scrollTop=0)})},n=s=>`${s.lat.toFixed(4)}, ${s.lng.toFixed(4)}`,N=s=>{g("system","地图加载完成")},B=s=>{const t=s.coordinate[0],r=s.coordinate[1];g("click",`地图点击: ${r.toFixed(6)}, ${t.toFixed(6)}`)},I=(s,t)=>{g("marker",`标记点击: ${s.title||s.id}`)},D=s=>{i.value=s,g("change",`中心点变化: ${n(s)}`)},x=s=>{f.value=s,g("change",`缩放级别变化: ${s}`)},m=s=>{i.value={lat:s.lat,lng:s.lng},g("action",`跳转到${s.name}`)},c=()=>{if(!o.value)return;const s=[{lat:39.9042,lng:116.4074,title:"天安门",content:"中华人民共和国的象征"},{lat:39.9163,lng:116.3972,title:"故宫",content:"明清两朝的皇家宫殿"},{lat:39.8844,lng:116.4056,title:"天坛",content:"明清皇帝祭天的场所"},{lat:40.0031,lng:116.3272,title:"颐和园",content:"中国古典园林的杰作"},{lat:40.3598,lng:116.0203,title:"八达岭长城",content:"万里长城的精华段"}];s.forEach(t=>{const r=o.value.addMarker({position:{lat:t.lat,lng:t.lng},title:t.title,content:t.content,draggable:!0});o.value.createInfoWindowForMarker(r,{lat:t.lat,lng:t.lng},`<div style="padding: 10px;">
        <h4 style="margin: 0 0 8px 0;">${t.title}</h4>
        <p style="margin: 0; font-size: 14px;">${t.content}</p>
      </div>`)}),g("action",`添加了${s.length}个标记`)},p=()=>{if(!o.value)return;const s=[];for(let t=0;t<10;t++){const r=i.value.lat+(Math.random()-.5)*.02,d=i.value.lng+(Math.random()-.5)*.02;s.push({position:{lat:r,lng:d},title:`集群标记 ${t+1}`,content:`这是集群中的第${t+1}个标记`,draggable:!1})}o.value.addMarkers(s),g("action",`创建了包含${s.length}个标记的集群`)},k=()=>{if(!o.value)return;const s=o.value.markers||[];let t=0;s.forEach(r=>{try{o.value.showMarkerInfoWindow(r.id),t++}catch{}}),g("action",`显示了${t}个信息窗`)},W=()=>{if(!o.value)return;const s=o.value.clearMarkers(),t=o.value.clearInfoWindows();g("action",`清空了${s}个标记和${t}个信息窗`)},V=()=>{M.value=[],g("system","日志已清空")};return e.watch([b,u,w],()=>{g("config","地图配置已更新")}),(s,t)=>(e.openBlock(),e.createElementBlock("div",jo,[t[20]||(t[20]=e.createElementVNode("h2",null,"高级地图示例",-1)),t[21]||(t[21]=e.createElementVNode("p",null,"展示华为地图组件的高级功能,包括事件监控、标记管理和信息窗",-1)),e.createElementVNode("div",Jo,[e.createElementVNode("div",Yo,[e.createVNode(O,{ref_key:"mapRef",ref:o,center:i.value,zoom:f.value,language:w.value,"source-type":u.value,"map-type":b.value,"zoom-control":!0,"scale-control":!0,"location-control":!0,"enable-event-monitor":!0,width:"100%",height:"500px",onMapReady:N,onMapClick:B,onMarkerClick:I,onCenterChanged:D,onZoomChanged:x},null,8,["center","zoom","language","source-type","map-type"])]),e.createElementVNode("div",qo,[e.createElementVNode("div",Go,[t[10]||(t[10]=e.createElementVNode("h3",null,"地图设置",-1)),e.createElementVNode("div",Xo,[t[5]||(t[5]=e.createElementVNode("label",null,"地图类型:",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":t[0]||(t[0]=r=>b.value=r)},t[4]||(t[4]=[e.createElementVNode("option",{value:"ROADMAP"},"基础地图",-1),e.createElementVNode("option",{value:"TERRAIN"},"地形图",-1)]),512),[[e.vModelSelect,b.value]])]),e.createElementVNode("div",Qo,[t[7]||(t[7]=e.createElementVNode("label",null,"瓦片类型:",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":t[1]||(t[1]=r=>u.value=r)},t[6]||(t[6]=[e.createElementVNode("option",{value:"vector"},"矢量",-1),e.createElementVNode("option",{value:"raster"},"栅格",-1)]),512),[[e.vModelSelect,u.value]])]),e.createElementVNode("div",en,[t[9]||(t[9]=e.createElementVNode("label",null,"语言:",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":t[2]||(t[2]=r=>w.value=r)},t[8]||(t[8]=[e.createElementVNode("option",{value:"zh"},"中文",-1),e.createElementVNode("option",{value:"en"},"English",-1)]),512),[[e.vModelSelect,w.value]])])]),e.createElementVNode("div",tn,[t[11]||(t[11]=e.createElementVNode("h3",null,"预设位置",-1)),e.createElementVNode("div",on,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(C,r=>e.createElementVNode("button",{key:r.name,onClick:d=>m(r),class:"preset-btn"},e.toDisplayString(r.name),9,nn)),64))])]),e.createElementVNode("div",{class:"section"},[t[12]||(t[12]=e.createElementVNode("h3",null,"批量操作",-1)),e.createElementVNode("div",{class:"batch-buttons"},[e.createElementVNode("button",{onClick:c,class:"btn primary"},"添加多个标记"),e.createElementVNode("button",{onClick:p,class:"btn secondary"},"创建标记集群"),e.createElementVNode("button",{onClick:k,class:"btn info"},"显示所有信息窗"),e.createElementVNode("button",{onClick:W,class:"btn danger"},"清空所有")])]),e.createElementVNode("div",ln,[t[17]||(t[17]=e.createElementVNode("h3",null,"统计信息",-1)),e.createElementVNode("div",an,[e.createElementVNode("div",sn,[t[13]||(t[13]=e.createElementVNode("span",{class:"stat-label"},"标记数量:",-1)),e.createElementVNode("span",rn,e.toDisplayString(h.value),1)]),e.createElementVNode("div",dn,[t[14]||(t[14]=e.createElementVNode("span",{class:"stat-label"},"信息窗数量:",-1)),e.createElementVNode("span",cn,e.toDisplayString(v.value),1)]),e.createElementVNode("div",mn,[t[15]||(t[15]=e.createElementVNode("span",{class:"stat-label"},"当前中心:",-1)),e.createElementVNode("span",pn,e.toDisplayString(n(i.value)),1)]),e.createElementVNode("div",fn,[t[16]||(t[16]=e.createElementVNode("span",{class:"stat-label"},"当前缩放:",-1)),e.createElementVNode("span",gn,e.toDisplayString(f.value),1)])])])])]),e.createElementVNode("div",un,[t[19]||(t[19]=e.createElementVNode("h3",null,"事件日志",-1)),e.createElementVNode("div",En,[e.createElementVNode("button",{onClick:V,class:"btn small"},"清空日志"),e.createElementVNode("label",Vn,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[3]||(t[3]=r=>l.value=r),type:"checkbox"},null,512),[[e.vModelCheckbox,l.value]]),t[18]||(t[18]=e.createElementVNode("span",null,"自动滚动",-1))])]),e.createElementVNode("div",{ref_key:"logContainer",ref:E,class:e.normalizeClass(["log-container",{"auto-scroll":l.value}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,(r,d)=>(e.openBlock(),e.createElementBlock("div",{key:d,class:e.normalizeClass(["log-entry",`log-${r.type}`])},[e.createElementVNode("span",Nn,e.toDisplayString(r.time),1),e.createElementVNode("span",kn,e.toDisplayString(r.type),1),e.createElementVNode("span",bn,e.toDisplayString(r.message),1)],2))),128))],2)])]))}}),[["__scopeId","data-v-c75a8372"]]),wn="1.0.0";_.AdvancedExample=yn,_.BasicExample=Ko,_.HuaweiMap=O,_.InfoWindowPanel=Po,_.MapConfigPanel=ze,_.MapEventMonitor=at,_.MarkerPanel=jt,_.defaultMapConfig=T,_.isHuaweiMapAPILoaded=ne,_.loadHuaweiMapAPI=K,_.mapStyles=te,_.mapTypes=oe,_.useInfoWindows=Y,_.useMapConfig=q,_.useMapEvents=j,_.useMapMarkers=J,_.version=wn,Object.defineProperty(_,Symbol.toStringTag,{value:"Module"})});