bbl-mapbox-react 0.0.32 → 0.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Mapbox.d.ts +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +32 -31
- package/dist/utils/measure.d.ts +3 -0
- package/package.json +1 -1
package/dist/Mapbox.d.ts
CHANGED
|
@@ -5,3 +5,5 @@ import { MapboxProps, MapboxRef } from './types';
|
|
|
5
5
|
* 使用 Mapbox Canvas Source 渲染雷达
|
|
6
6
|
*/
|
|
7
7
|
export declare const Mapbox: import('react').ForwardRefExoticComponent<MapboxProps & import('react').RefAttributes<MapboxRef>>;
|
|
8
|
+
export * from './utils/measure';
|
|
9
|
+
export * from './utils/geoUtils';
|
package/dist/index.cjs
CHANGED
|
@@ -48,7 +48,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
48
48
|
${a?`<div class="road-highlight-popup__title">${a}</div>`:``}
|
|
49
49
|
<div class="road-highlight-popup__info">${g.join(``)}</div>
|
|
50
50
|
</div>
|
|
51
|
-
`;O.current||=new l.default.Popup({closeButton:!1,closeOnClick:!1,offset:15,className:`road-highlight-popup`}),O.current.setLngLat(r).setHTML(_).addTo(e),e.getCanvas().style.cursor=`pointer`}else O.current&&O.current.remove(),e.getCanvas().style.cursor=``},[e,v,ee,o]);(0,c.useEffect)(()=>{if(!(!e||!b))return e.on(`mousemove`,A),()=>{if(e)try{e.off(`mousemove`,A),O.current&&O.current.remove(),e.getCanvas().style.cursor=``}catch{}}},[e,b,A]);let j=(e,t)=>{y(n=>t?[...n,e]:n.filter(t=>t!==e))},M=e=>{y(e?E.map(e=>e.class):[])},te=v.length>0,ne=()=>(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control__panel-header`,children:[(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__panel-title`,children:`道路类型`}),(0,p.jsx)(m.Checkbox,{checked:v.length===E.length,indeterminate:v.length>0&&v.length<E.length,onChange:M,style:{"--color-text-1":`#fff`,"--color-border-2":`rgba(255, 255, 255, 0.3)`},children:(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__type-label`,children:`全选`})})]}),(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__scroll`,children:(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__type-list`,children:E.map(e=>(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control__type-item`,onClick:()=>j(e.class,!v.includes(e.class)),children:[(0,p.jsx)(m.Checkbox,{checked:v.includes(e.class),onChange:t=>j(e.class,t),onClick:e=>e.stopPropagation(),style:{"--color-text-1":`#fff`,"--color-border-2":`rgba(255, 255, 255, 0.3)`,marginRight:0,flexShrink:0}}),(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__color-indicator`,style:{backgroundColor:e.color}}),(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__type-label`,children:e.label})]},e.class))})}),(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__tip`,children:`选中道路类型后立即显示高亮`}),!b&&(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__warning`,children:`正在初始化图层...`})]});return(0,c.useImperativeHandle)(h,()=>({setPortalContainer:C})),(0,p.jsxs)(p.Fragment,{children:[d&&(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control ${s}`,style:u,children:[(0,p.jsxs)(`button`,{ref:D,className:`mapbox-control-btn mapbox-road-highlight-control__btn ${te?`mapbox-road-highlight-control__btn--active`:``}`,onClick:()=>_(!g),title:`路网高亮${v.length>0?` (已选 ${v.length})`:``}`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769487141027'%20class='icon'%20viewBox='0%200%201517%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='2644'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='189.625'%20height='128'%3e%3cpath%20d='M1.68121071-242.12320149h1508.24640296v1508.24640298h-1508.24640296z'%20fill='%23ffffff'%20fill-opacity='0'%20p-id='2645'%3e%3c/path%3e%3cpath%20d='M437.30078846%20170.6624h682.66239999v682.6624H437.30078846z'%20fill='%23ffffff'%20fill-opacity='0'%20p-id='2646'%3e%3c/path%3e%3cpath%20d='M1151.68343834%2040.66710748H373.42829443A81.76345149%2081.76345149%200%200%200%20292.90207634%20121.49379654v784.42363608c0%2040.42218191%2036.92257893%2077.41545989%2080.5262181%2077.4154599h781.6133488a81.76345149%2081.76345149%200%200%200%2080.52621814-80.82668906V121.49379654C1232.08593315%2077.76643404%201195.25172802%2040.66710748%201151.6657636%2040.66710748z%20m-325.39237822%20616.14222197H618.29445458V451.37556451h53.66057906c6.71640976%200%2013.41514477-3.35820487%2020.11387975-6.73408452l97.28189301-100.99359314h134.18679716v208.72127078c-46.96184405%2013.50351858-87.22495312%2053.90802574-97.28189299%20104.4048223z%20m130.7932427-20.23760311c23.50743418%200%2043.65666346%2020.21992834%2043.65666349%2043.76271204a44.50505206%2044.50505206%200%200%201-43.62131391%2043.7803868%2044.50505206%2044.50505206%200%200%201-43.6036392-43.7803868c0-23.54278369%2020.096205-43.76271203%2043.6036392-43.76271204h-0.05302433zM564.63387554%20926.10201142H373.42829443a22.87114272%2022.87114272%200%200%201-16.79102442-6.71640975%2023.04789036%2023.04789036%200%200%201-6.71640975-16.82637394V714.02253578h214.73069002v212.07947564z%20m0-269.31035673H349.92086026V118.13559167c0-10.1453137%2010.05693988-20.2376031%2023.50743417-20.23760309h553.4321645v188.53669194h-147.54891766c-6.69873499%200-13.39747001%203.35820487-20.096205%206.71640977l-97.28189297%2097.653063H460.61789801a26.44144475%2026.44144475%200%200%200-19.08874355%207.79457028%2026.63586714%2026.63586714%200%200%200-7.72387123%2019.1594426c0%2016.80869917%2013.39747001%2026.90098858%2026.81261478%2026.90098857h104.03365227v212.13249995z%20m610.48629795%20245.71454877c0.17674763%206.29221547-2.24469484%2012.37233377-6.68106024%2016.84404869s-10.49880895%206.89315739-16.77334965%206.75175927h-533.42433329v-212.0971504H829.63159021c13.39747001%2057.24855586%2067.07572382%2097.65306301%20127.48806219%2097.653063a128.67227125%20128.67227125%200%200%200%2093.05762473-37.87701612%20129.60903367%20129.60903367%200%200%200%2037.73561801-93.39344522c0-64.00031515-46.96184405-117.8553166-103.98062799-128.00063029v-208.73894554h194.56378599v558.91134088h-3.35820489v-0.05302427z%20m0-616.07152294H980.57406228V97.89798858h171.10937607c13.39747001%200%2023.45440988%2010.07461465%2023.4544099%2023.59580796v164.94088398z'%20fill='%23ffffff'%20p-id='2647'%3e%3c/path%3e%3c/svg%3e`,alt:`road`,className:`mapbox-road-highlight-control__btn-icon`}),(0,p.jsxs)(`span`,{children:[`路网`,v.length>0?` (${v.length})`:``]})]}),g&&(0,p.jsx)(`div`,{ref:T,className:`mapbox-road-highlight-control__panel`,children:ne()})]}),S&&(0,f.createPortal)(ne(),S)]})});Pe.displayName=`RoadHighlightControl`;var Fe=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773733446763'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='1802'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M110.34624%20352.01024a30.72%2030.72%200%201%200%2061.44%200v-38.46144h680.42752v38.5024a30.72%2030.72%200%200%200%2061.44%200V213.72928a30.72%2030.72%200%200%200-61.44%200v38.33856H171.78624v-38.33856a30.72%2030.72%200%200%200-61.44%200v138.28096z%20m34.816%20127.22176a34.816%2034.816%200%200%200-34.816%2034.816v312.60672c0%2019.2512%2015.5648%2034.816%2034.816%2034.816h733.5936c19.2512%200%2034.816-15.5648%2034.816-34.816V514.048a34.816%2034.816%200%200%200-34.816-34.816H145.2032z%20m26.624%20320.79872V540.672h680.3456v259.35872H171.8272z'%20fill='white'%20p-id='1804'%3e%3c/path%3e%3c/svg%3e`,Ie=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,Le=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,Re=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,ze=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Be=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e`,Ve=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,He={square:`正方形`,rectangle:`矩形`,circle:`圆形`,polygon:`多边形`,polyline:`折线`},Ue=[{mode:`square`,icon:Ie,label:`正方形`},{mode:`rectangle`,icon:Le,label:`矩形`},{mode:`circle`,icon:Re,label:`圆形`},{mode:`polygon`,icon:ze,label:`多边形`},{mode:`polyline`,icon:Be,label:`折线`}];function We(e,t){let[n,r]=e,[i,a]=t,o=(a-r)*Math.PI/180,s=(i-n)*Math.PI/180,c=Math.sin(o/2)*Math.sin(o/2)+Math.cos(r*Math.PI/180)*Math.cos(a*Math.PI/180)*Math.sin(s/2)*Math.sin(s/2);return 6371e3*(2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c)))}function Ge(e,t,n=64){let[r,i]=e,a=[],o=t/6371e3,s=i*Math.PI/180;for(let e=0;e<=n;e++){let t=e/n*2*Math.PI,c=o*Math.cos(t),l=o*Math.sin(t)/Math.cos(s);a.push([r+l*180/Math.PI,i+c*180/Math.PI])}return a}function Ke(e,t){let[n,r]=e,i=t/2/6371e3,a=r*Math.PI/180,o=i*180/Math.PI,s=i*180/Math.PI/Math.cos(a);return[[n-s,r+o],[n+s,r+o],[n+s,r-o],[n-s,r-o],[n-s,r+o]]}function qe(e){if(e.type===`circle`)return A(Math.PI*e.radius*e.radius);if(e.type===`square`)return A(e.length*e.length);if(e.type===`rectangle`){let[[t,n],[r,i]]=e.bounds,a=[Math.min(t,r),Math.max(n,i)],o=[Math.max(t,r),Math.max(n,i)],s=[Math.max(t,r),Math.min(n,i)],c=O(a,o),l=O(o,s);return A(c*l)}if(e.type===`polygon`){let t=[...e.coordinates,e.coordinates[0]];return A(ee(t))}}function H(e){if(e.type===`circle`)return j(e.radius);if(e.type===`square`)return j(e.length);if(e.type===`rectangle`){let[[t,n],[r,i]]=e.bounds,a=[Math.min(t,r),Math.max(n,i)],o=[Math.max(t,r),Math.max(n,i)],s=[Math.max(t,r),Math.min(n,i)],c=O(a,o),l=O(o,s);return j(2*(c+l))}if(e.type===`polygon`){let t=0,n=e.coordinates;for(let e=0;e<n.length;e++)t+=O(n[e],n[(e+1)%n.length]);return j(t)}if(e.type===`polyline`){let t=0;for(let n=0;n<e.coordinates.length-1;n++)t+=O(e.coordinates[n],e.coordinates[n+1]);return j(t)}}var U=`measure-`;function W(e,t){e.getSource(t)||e.addSource(t,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}})}function Je(e,t){let n=e.getSource(t);n&&n.setData({type:`FeatureCollection`,features:[]})}function Ye(e){if(!e.getStyle().glyphs){let t=e.style,n=`/gis-fonts/{fontstack}/{range}.pbf`;t.glyphs=n,t.stylesheet&&(t.stylesheet.glyphs=n)}}function G(e){Ye(e);for(let t of[`rect`,`circle`,`square`,`polygon`]){let n=`${U}${t}-preview-source`,r=`${U}${t}-preview-fill`,i=`${U}${t}-preview-line`,a=`${U}${t}-preview-measure-source`,o=`${U}${t}-preview-measure-label`;W(e,n),e.getLayer(r)||e.addLayer({id:r,type:`fill`,source:n,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.getLayer(i)||e.addLayer({id:i,type:`line`,source:n,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),W(e,a),e.getLayer(o)||e.addLayer({id:o,type:`symbol`,source:a,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0,0,0,0.8)`,"text-halo-width":1}})}let t=`${U}polyline-preview-source`,n=`${U}polyline-preview-line`,r=`${U}polyline-vertices-source`,i=`${U}polyline-vertices`,a=`${U}polyline-preview-measure-source`,o=`${U}polyline-preview-measure-label`;W(e,t),e.getLayer(n)||e.addLayer({id:n,type:`line`,source:t,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),W(e,r),e.getLayer(i)||e.addLayer({id:i,type:`circle`,source:r,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}}),W(e,a),e.getLayer(o)||e.addLayer({id:o,type:`symbol`,source:a,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0,0,0,0.8)`,"text-halo-width":1}});let s=`${U}polygon-vertices-source`,c=`${U}polygon-vertices`;W(e,s),e.getLayer(c)||e.addLayer({id:c,type:`circle`,source:s,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}});let l=`${U}circle-radius-source`,u=`${U}circle-radius-line`;W(e,l),e.getLayer(u)||e.addLayer({id:u,type:`line`,source:l,paint:{"line-color":`#ffffff`,"line-width":1,"line-dasharray":[4,4]}})}function K(e){for(let t of[`rect-preview-source`,`rect-preview-measure-source`,`circle-preview-source`,`circle-preview-measure-source`,`circle-radius-source`,`square-preview-source`,`square-preview-measure-source`,`polygon-preview-source`,`polygon-preview-measure-source`,`polygon-vertices-source`,`polyline-preview-source`,`polyline-preview-measure-source`,`polyline-vertices-source`])Je(e,`${U}${t}`)}function Xe({map:e,entityConfig:t,onEntityConfigChange:n,onDrawModeChange:r,className:i=``,style:a}){let[o,s]=(0,c.useState)(!1),[l,u]=(0,c.useState)(null),[d,f]=(0,c.useState)({showArea:!0,showLength:!0,showRadius:!0}),h=t!==void 0,g=h?{showArea:t.showArea??!0,showLength:t.showLength??!0,showRadius:t.showRadius??!0}:d,[_,v]=(0,c.useState)([]),y=(0,c.useRef)(new Map),b=(0,c.useRef)(0),x=(0,c.useRef)(null),C=(0,c.useRef)(null),w=(0,c.useRef)(null),T=(0,c.useRef)(null),E=(0,c.useRef)(null),k=(0,c.useRef)([]),M=(0,c.useRef)([]),te=(0,c.useRef)(g);te.current=g;let ne=(0,c.useRef)(l);ne.current=l;let N=(0,c.useCallback)(()=>`measure-${++b.current}`,[]);(0,c.useEffect)(()=>{r?.(l!==null)},[l,r]);let P=(0,c.useRef)(!1),re=(0,c.useCallback)(()=>{!e||!e.isStyleLoaded()||(G(e),P.current=!0)},[e]);(0,c.useEffect)(()=>{if(!e)return;let t=()=>{G(e),P.current=!0};e.isStyleLoaded()?t():e.once(`load`,t);let n=()=>{P.current=!1};return e.on(`style.load`,n),()=>{if(e)try{e.off(`style.load`,n)}catch{}}},[e]),(0,c.useEffect)(()=>{let e=e=>{x.current&&!x.current.contains(e.target)&&C.current&&!C.current.contains(e.target)&&s(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let ie=(0,c.useCallback)(t=>{if(!e)return;let n=S(t,te.current),r=null;if(n.type===`circle`?r=new ye(e,n):n.type===`square`?r=new Ce(e,n):n.type===`rectangle`?r=new we(e,n):n.type===`polygon`?r=new fe(e,n):n.type===`polyline`&&(r=new _e(e,n)),r){y.current.set(n.id,r);let e={entity:n,shapeLabel:He[n.type]||n.type,area:qe(n),lengthOrRadius:H(n)};v(t=>[...t,e])}},[e]),ae=(0,c.useCallback)(e=>{let t=y.current.get(e);t&&(t.destroy(),y.current.delete(e)),v(t=>t.filter(t=>t.entity.id!==e))},[]),F=(0,c.useCallback)(()=>{y.current.forEach(e=>e.destroy()),y.current.clear(),v([])},[]),I=(0,c.useCallback)(t=>{if(!e)return;let n=y.current.get(t);if(!n)return;let r=n.getBounds();e.fitBounds(r,{padding:80,maxZoom:18,duration:1e3})},[e]),oe=(0,c.useCallback)((e,t)=>{let r={...te.current,[e]:t};h?n?.({...r}):f(r),v(t=>t.map(t=>{let n={...t.entity};n[e]=void 0;let i=S(n,r),a=y.current.get(t.entity.id);return a&&a.update(i),{...t,entity:i}}))},[h,n]),se=(0,c.useCallback)((t,n)=>{if(!e)return;let[r,i]=t,[a,o]=n,s=[[Math.min(r,a),Math.max(i,o)],[Math.max(r,a),Math.max(i,o)],[Math.max(r,a),Math.min(i,o)],[Math.min(r,a),Math.min(i,o)],[Math.min(r,a),Math.max(i,o)]],c=e.getSource(`${U}rect-preview-source`);c&&c.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[s]},properties:{}});let l=e.getSource(`${U}rect-preview-measure-source`);if(l){let e=te.current,t=[],n=s[0],r=s[1],i=s[2];if(e?.showArea){let e=O(n,r),a=O(r,i);t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:A(e*a)}})}e?.showLength&&(t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+r[0])/2,(n[1]+r[1])/2]},properties:{label:j(O(n,r))}}),t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(r[0]+i[0])/2,(r[1]+i[1])/2]},properties:{label:j(O(r,i))}})),l.setData({type:`FeatureCollection`,features:t})}},[e]),ce=(0,c.useCallback)((t,n)=>{if(!e)return;let r=We(t,n),i=Ge(t,r),a=e.getSource(`${U}circle-preview-source`);a&&a.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[i]},properties:{}});let o=te.current,s=[],c=[];if(o?.showArea&&s.push({type:`Feature`,geometry:{type:`Point`,coordinates:t},properties:{label:A(Math.PI*r*r)}}),o?.showRadius){let e=D(t,r,90),n=[(t[0]+e[0])/2,(t[1]+e[1])/2];c.push({type:`Feature`,geometry:{type:`LineString`,coordinates:[t,e]},properties:{}}),s.push({type:`Feature`,geometry:{type:`Point`,coordinates:n},properties:{label:j(r)}})}let l=e.getSource(`${U}circle-preview-measure-source`);l&&l.setData({type:`FeatureCollection`,features:s});let u=e.getSource(`${U}circle-radius-source`);u&&u.setData({type:`FeatureCollection`,features:c})},[e]),le=(0,c.useCallback)((t,n)=>{if(!e)return;let r=We(t,n)*2,i=Ke(t,r),a=e.getSource(`${U}square-preview-source`);a&&a.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[i]},properties:{}});let o=e.getSource(`${U}square-preview-measure-source`);if(o){let e=te.current,n=[];if(e?.showArea&&n.push({type:`Feature`,geometry:{type:`Point`,coordinates:t},properties:{label:A(r*r)}}),e?.showLength){let e=[(i[1][0]+i[2][0])/2,(i[1][1]+i[2][1])/2];n.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:j(r)}})}o.setData({type:`FeatureCollection`,features:n})}},[e]),ue=(0,c.useCallback)((t,n)=>{if(!e)return;let r=[...t,n],i=e.getSource(`${U}polygon-preview-source`);i&&(r.length>=3?i.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[[...r,r[0]]]},properties:{}}):r.length===2?i.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:r},properties:{}}):i.setData({type:`FeatureCollection`,features:[]}));let a=e.getSource(`${U}polygon-vertices-source`);a&&a.setData({type:`FeatureCollection`,features:t.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=e.getSource(`${U}polygon-preview-measure-source`);if(o){let e=te.current,t=[];if(e?.showArea&&r.length>=3){let e=ee([...r,r[0]]),n=0,i=0;for(let e of r)n+=e[0],i+=e[1];n/=r.length,i/=r.length,t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[n,i]},properties:{label:A(e)}})}if(e?.showLength&&r.length>=2){for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:j(O(n,i))}})}if(r.length>=3){let e=r[r.length-1],n=r[0];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(e[0]+n[0])/2,(e[1]+n[1])/2]},properties:{label:j(O(e,n))}})}}o.setData({type:`FeatureCollection`,features:t})}},[e]),de=(0,c.useCallback)((t,n)=>{if(!e)return;let r=[...t,n],i=e.getSource(`${U}polyline-preview-source`);i&&(r.length>=2?i.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:r},properties:{}}):i.setData({type:`FeatureCollection`,features:[]}));let a=e.getSource(`${U}polyline-vertices-source`);a&&a.setData({type:`FeatureCollection`,features:t.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=e.getSource(`${U}polyline-preview-measure-source`);if(o){let e=te.current,t=[];if(e?.showLength&&r.length>=2)for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:j(O(n,i))}})}o.setData({type:`FeatureCollection`,features:t})}},[e]);(0,c.useEffect)(()=>{if(!e||!l)return;re(),e.getCanvas().style.cursor=`crosshair`;let t=t=>{let n=[t.lngLat.lng,t.lngLat.lat],r=ne.current;if(r===`rectangle`){let t=w.current;if(!t)w.current=n;else{let r={id:N(),type:`rectangle`,bounds:[t,n]};ie(r),w.current=null,K(e),u(null)}}else if(r===`circle`){let t=T.current;if(!t)T.current={center:n};else{let r=We(t.center,n),i={id:N(),type:`circle`,center:t.center,radius:r};ie(i),T.current=null,K(e),u(null)}}else if(r===`square`){let t=E.current;if(!t)E.current={center:n};else{let r=We(t.center,n)*2,i={id:N(),type:`square`,center:t.center,length:r};ie(i),E.current=null,K(e),u(null)}}else if(r===`polygon`){let t=k.current;if(t.length>=3&&We(t[0],n)<20){let n={id:N(),type:`polygon`,coordinates:[...t]};ie(n),k.current=[],K(e),u(null);return}k.current=[...t,n]}else r===`polyline`&&(M.current=[...M.current,n])},n=e=>{let t=[e.lngLat.lng,e.lngLat.lat],n=ne.current;if(n===`rectangle`&&w.current)se(w.current,t);else if(n===`circle`&&T.current)ce(T.current.center,t);else if(n===`square`&&E.current)le(E.current.center,t);else if(n===`polygon`){let e=k.current;e.length>0&&ue(e,t)}else if(n===`polyline`){let e=M.current;e.length>0&&de(e,t)}},r=t=>{t.preventDefault();let n=ne.current;if(n===`polygon`){let t=k.current;if(t.length>=3){let n={id:N(),type:`polygon`,coordinates:[...t]};ie(n),k.current=[],K(e),u(null)}else k.current=[],K(e)}else if(n===`polyline`){let t=M.current;if(t.length>=2){let n={id:N(),type:`polyline`,coordinates:[...t]};ie(n),M.current=[],K(e),u(null)}else M.current=[],K(e)}},i=t=>{t.key===`Escape`&&(w.current=null,T.current=null,E.current=null,k.current=[],M.current=[],K(e),u(null))},a=t=>{t.preventDefault();let n=ne.current;if(n===`polygon`){let t=k.current;if(t.length>=3){let n={id:N(),type:`polygon`,coordinates:[...t]};ie(n),k.current=[],K(e),u(null)}}else if(n===`polyline`){let t=M.current;if(t.length>=2){let n={id:N(),type:`polyline`,coordinates:[...t]};ie(n),M.current=[],K(e),u(null)}}};return e.doubleClickZoom.disable(),e.on(`click`,t),e.on(`mousemove`,n),e.on(`contextmenu`,r),e.on(`dblclick`,a),document.addEventListener(`keydown`,i),()=>{if(document.removeEventListener(`keydown`,i),e)try{e.off(`click`,t),e.off(`mousemove`,n),e.off(`contextmenu`,r),e.off(`dblclick`,a),e.getCanvas().style.cursor=``,e.doubleClickZoom.enable(),K(e)}catch{}}},[e,l,N,ie,re,se,ce,le,ue,de]),(0,c.useEffect)(()=>()=>{y.current.forEach(e=>e.destroy()),y.current.clear()},[]);let pe=(0,c.useCallback)(t=>{u(e=>e===t?null:t),w.current=null,T.current=null,E.current=null,k.current=[],M.current=[],e&&K(e)},[e]);return e?(0,p.jsxs)(`div`,{className:`mapbox-measure-control ${i}`,style:a,children:[(0,p.jsxs)(`button`,{ref:C,className:`mapbox-control-btn mapbox-measure-control__btn ${o?`mapbox-measure-control__btn--active`:``}`,onClick:()=>s(!o),title:`测量`,children:[(0,p.jsx)(`img`,{src:Fe,alt:`measure`,className:`mapbox-measure-control__btn-icon`}),(0,p.jsx)(`span`,{children:`测量`}),_.length>0&&(0,p.jsxs)(`span`,{children:[`(`,_.length,`)`]})]}),o&&(0,p.jsxs)(`div`,{ref:x,className:`mapbox-measure-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-measure-control__section-title`,children:`显示设置`}),(0,p.jsxs)(`div`,{className:`mapbox-measure-control__settings`,children:[(0,p.jsx)(m.Checkbox,{checked:g.showArea,onChange:e=>oe(`showArea`,e),children:`面积`}),(0,p.jsx)(m.Checkbox,{checked:g.showLength,onChange:e=>oe(`showLength`,e),children:`长度`}),(0,p.jsx)(m.Checkbox,{checked:g.showRadius,onChange:e=>oe(`showRadius`,e),children:`半径`})]}),(0,p.jsx)(`div`,{className:`mapbox-measure-control__section-title`,children:`绘制工具`}),(0,p.jsxs)(`div`,{className:`mapbox-measure-control__tools`,children:[Ue.map(e=>(0,p.jsx)(`button`,{className:`mapbox-measure-control__tool-btn ${l===e.mode?`mapbox-measure-control__tool-btn--active`:``}`,onClick:()=>pe(e.mode),title:e.label,children:(0,p.jsx)(`img`,{src:e.icon,alt:e.label})},e.mode)),_.length>0&&(0,p.jsx)(`button`,{className:`mapbox-measure-control__tool-btn mapbox-measure-control__tool-btn--danger`,onClick:F,title:`清除全部`,children:(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,alt:`clear`})})]}),_.length>0?(0,p.jsx)(`div`,{className:`mapbox-measure-control__list`,children:(0,p.jsxs)(`table`,{className:`mapbox-measure-control__table`,children:[(0,p.jsx)(`thead`,{children:(0,p.jsxs)(`tr`,{children:[(0,p.jsx)(`th`,{children:`类型`}),(0,p.jsx)(`th`,{children:`ID`}),(0,p.jsx)(`th`,{children:`面积`}),(0,p.jsx)(`th`,{children:`长度/半径`}),(0,p.jsx)(`th`,{})]})}),(0,p.jsx)(`tbody`,{children:_.map(e=>(0,p.jsxs)(`tr`,{className:`mapbox-measure-control__table-row`,onClick:()=>I(e.entity.id),children:[(0,p.jsx)(`td`,{children:e.shapeLabel}),(0,p.jsx)(`td`,{children:String(e.entity.id)}),(0,p.jsx)(`td`,{children:e.area??`-`}),(0,p.jsx)(`td`,{children:e.lengthOrRadius??`-`}),(0,p.jsx)(`td`,{children:(0,p.jsx)(`button`,{className:`mapbox-measure-control__delete-btn`,onClick:t=>{t.stopPropagation(),ae(e.entity.id)},title:`删除`,children:(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,alt:`delete`})})})]},String(e.entity.id)))})]})}):(0,p.jsx)(`div`,{className:`mapbox-measure-control__empty`,children:`选择工具后在地图上点击绘制`})]})]}):null}var Ze=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773803353422'%20class='icon'%20viewBox='0%200%201028%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6757'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128.5'%20height='128'%3e%3cpath%20d='M835.073959%20357.94044V345.56192a345.170251%20345.170251%200%201%200-686.690426%2049.672777A345.090902%20345.090902%200%200%200%20523.706588%20974.009826a345.090902%20345.090902%200%201%200%20311.049973-616.069386zM490.141757%2048.001359a297.877959%20297.877959%200%200%201%20297.560561%20297.560561c0%207.934948%200%2016.345994-1.031543%2025.074437A297.639911%20297.639911%200%200%201%20490.141757%20643.122482h-15.869897a289.943011%20289.943011%200%200%201-104.106522-24.757039A297.481212%20297.481212%200%200%201%20490.141757%2048.001359zM345.170251%20976.39031a297.560561%20297.560561%200%200%201-185.281043-530.371944c0%201.031543%200.714145%202.142436%201.031544%203.253328s1.50764%204.522921%202.301135%206.824056c1.269592%203.888125%202.697882%207.934948%204.126173%2011.743724%200.952194%202.301135%201.825038%204.60227%202.697882%206.903405%201.58699%203.808775%203.253329%207.934948%204.919668%2011.505675%200.952194%202.142436%201.904388%204.284872%202.935931%206.347958%201.983737%204.284872%204.126173%208.490395%206.268609%2012.695918l2.380485%204.60227c3.01528%205.633813%206.268609%2011.108928%209.601287%2016.504692%200.793495%201.428291%201.745689%202.777232%202.618533%204.126173%202.539183%204.046824%205.157716%207.934948%207.934948%2011.981772l4.205523%205.792512c2.380484%203.253329%204.760969%206.506658%207.220803%209.680637l4.840318%206.030561c2.459834%203.01528%204.999017%205.951211%207.538201%208.887142l5.157717%205.792512c2.777232%203.01528%205.633813%205.951211%208.569744%208.887142l4.840318%204.999018c4.205523%204.046824%208.411045%207.934948%2012.775267%2011.823073l3.09463%202.618533c4.205523%203.650076%208.490395%207.220803%2012.854616%2010.63283l5.713163%204.205523c3.332678%202.459834%206.586007%204.919668%209.998035%207.220803l6.506657%204.364222q4.999017%203.332678%209.998035%206.427308c2.221786%201.348941%204.443571%202.697882%206.744706%203.967474%203.570727%202.142436%207.300152%204.126173%2010.950229%206.10991l6.18926%203.253329%202.301135%201.269592v12.378519c0%207.379502%200%2014.759004%200.793494%2021.979807%200%202.459834%200.396747%204.840318%200.634796%207.220803%200%204.840318%200.793495%209.759986%201.428291%2014.600305%200%202.777232%200.872844%205.554464%201.269592%208.411045%200.714145%204.364222%201.428291%208.728443%202.221785%2013.013315%200.555446%202.935931%201.190242%205.871862%201.825038%208.728443%200.952194%204.205523%201.904388%207.934948%203.015281%2012.457869s1.50764%205.871862%202.380484%208.728443%202.380484%207.934948%203.729426%2012.140471c0.952194%202.856581%201.825038%205.633813%202.856581%208.490395%201.428291%204.046824%203.01528%207.934948%204.60227%2012.061121%201.110893%202.618533%202.142436%205.316415%203.253329%207.934948%201.825038%204.284872%203.729426%208.411045%205.713163%2012.537219%201.110893%202.301135%202.142436%204.681619%203.332678%206.903405%202.618533%205.316415%205.475114%2010.474132%208.411045%2015.869896%200.555446%201.110893%201.110893%202.221786%201.745689%203.332679%203.570727%206.10991%207.379502%2012.061121%2011.346976%2018.012332%201.269592%201.904388%202.697882%203.808775%204.046824%205.713163%202.777232%203.967474%205.475114%207.934948%208.411045%2011.664374%201.745689%202.301135%203.570727%204.443571%205.395765%206.744706s5.316415%206.586007%207.934948%209.839336%204.046824%204.60227%206.10991%206.824056%205.633813%206.030561%208.490395%209.045841l6.744706%206.586007c2.935931%202.856581%205.871862%205.633813%208.966492%207.934948s4.681619%204.205523%207.062104%206.268609%206.427308%205.316415%209.759986%207.934948%204.760969%203.888125%207.300152%205.713163l2.380485%201.904388A295.894222%20295.894222%200%200%201%20345.170251%20976.39031z%20m335.965711-11.981772a296.608368%20296.608368%200%200%201-146.479145-38.563848c-5.792512-3.332678-11.426326-6.744706-16.90144-10.315433-1.825038-1.190242-3.491377-2.539183-5.237066-3.729426-3.650076-2.459834-7.300152-4.999017-10.79153-7.934948-2.063087-1.50764-3.967474-3.173979-5.871862-4.760969-3.173979-2.459834-6.268609-4.919668-9.283889-7.934949s-3.967474-3.650076-5.951211-5.475114-5.633813-5.078367-7.934949-7.934948-3.808775-4.046824-5.792512-6.10991-5.078367-5.157716-7.458851-7.934949l-5.554464-6.506657c-1.825038-2.142436-4.60227-5.475114-6.824056-7.934949s-3.412028-4.681619-5.157716-7.062104-4.205523-5.633813-6.10991-8.490394-3.253329-4.999017-4.840319-7.458852-3.729426-5.792512-5.475114-8.807792-2.935931-5.157716-4.364222-7.934949-3.332678-6.030561-4.919668-9.045841-2.539183-5.395765-3.808775-7.934948-2.935931-6.18926-4.284872-9.363239-2.301135-5.554464-3.412028-8.411045-2.459834-6.268609-3.570726-9.521938-1.983737-5.792512-2.856582-8.649094-2.063087-6.506658-3.01528-9.759986-1.58699-5.951211-2.301135-8.887142-1.666339-6.586007-2.380485-9.918686S388.812467%20722.471965%20388.812467%20719.536034s-1.190242-6.665357-1.666339-9.998035-0.793495-6.18926-1.110893-9.28389-0.793495-6.824056-1.031543-10.236083%200-6.268609-0.555447-9.363239v-6.665357h0.396748l2.142436%200.634796c4.364222%201.428291%208.807793%202.697882%2013.251363%203.967474l4.840319%201.269592%2011.505675%202.697883%204.52292%201.031543c5.237066%201.031543%2010.474132%201.983737%2015.869897%202.856581h1.348941c4.840318%200.793495%209.759986%201.348941%2014.600305%201.904388l4.919668%200.476097q5.951211%200.634796%2011.902422%200.952194H490.855902a344.456106%20344.456106%200%200%200%20183.138607-52.529358c5.395765-3.412028%2010.71218-7.062104%2015.869896-10.71218%201.745689-1.190242%203.332678-2.539183%205.078367-3.729426%203.412028-2.539183%206.903405-5.157716%2010.236084-7.934948l5.713162-4.760969c3.01528-2.459834%206.030561-4.999017%208.966492-7.934949l5.633813-5.237066c2.856581-2.618533%205.554464-5.237066%207.934949-7.934948l5.475114-5.633813c2.618533-2.697882%205.237066-5.475114%207.934948-8.331696l5.078367-5.713163%207.458851-9.045841%204.522921-5.633813%207.934948-10.315433%203.570727-4.999017c3.173979-4.60227%206.268609-9.363239%209.20454-14.203558l1.031543-1.586989c3.332678-5.475114%206.506658-11.029578%209.601288-16.663392%200.634796-1.190242%201.190242-2.380484%201.745688-3.570727%202.301135-4.443571%204.60227-8.887142%206.665357-13.410062%200.872844-1.825038%201.666339-3.729426%202.539183-5.554464%201.745689-3.967474%203.491377-7.934948%205.078367-11.902422%200.793495-2.063087%201.58699-4.205523%202.459834-6.347959%201.428291-3.808775%202.856581-7.934948%204.126173-11.505675%200.793495-2.221786%201.50764-4.522921%202.221786-6.744706%201.190242-3.808775%202.380484-7.934948%203.491377-11.585025%200.634796-2.301135%201.269592-4.60227%201.825038-6.903405%201.031543-3.967474%201.904388-7.934948%202.777232-11.902422%200.555446-2.301135%201.031543-4.522921%201.50764-6.824056%200-1.031543%200.476097-2.142436%200.634796-3.173979a297.560561%20297.560561%200%200%201-148.304183%20555.446381z'%20fill='%23ffffff'%20p-id='6758'%3e%3c/path%3e%3c/svg%3e`,q={brightness:1,saturation:0,contrast:0,hueRotate:0},Qe=[{key:`brightness`,label:`亮度`,min:0,max:1,step:.01},{key:`saturation`,label:`饱和度`,min:-1,max:1,step:.01},{key:`contrast`,label:`对比度`,min:-1,max:1,step:.01},{key:`hueRotate`,label:`色相`,min:0,max:360,step:1}];function $e({map:e,value:t,onChange:n,rasterPaintLayerIds:r=[],className:i,style:a}){let[o,s]=(0,c.useState)(!1),[l,u]=(0,c.useState)({...q}),d=(0,c.useRef)(null),f=(0,c.useRef)(null),h=t!==void 0;(0,c.useEffect)(()=>{let e=e=>{d.current&&!d.current.contains(e.target)&&f.current&&!f.current.contains(e.target)&&s(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let g=(0,c.useMemo)(()=>h?{brightness:t.brightness??q.brightness,saturation:t.saturation??q.saturation,contrast:t.contrast??q.contrast,hueRotate:t.hueRotate??q.hueRotate}:l,[h,t,l]),_=(0,c.useRef)(h);(0,c.useEffect)(()=>{h&&!_.current&&u({...g}),_.current=h},[h,g]);let v=(0,c.useCallback)(t=>{if(!(!e||r.length===0))for(let n of r)e.getLayer(n)&&(e.setPaintProperty(n,`raster-brightness-min`,0),e.setPaintProperty(n,`raster-brightness-max`,t.brightness),e.setPaintProperty(n,`raster-saturation`,t.saturation),e.setPaintProperty(n,`raster-contrast`,t.contrast),e.setPaintProperty(n,`raster-hue-rotate`,t.hueRotate))},[e,r]),y=(0,c.useCallback)((e,t)=>{if(h)n?.({...g,[e]:t});else{let n={...l,[e]:t};u(n),v(n)}},[h,n,g,l,v]),b=(0,c.useCallback)(()=>{h?n?.({...q}):(u({...q}),v({...q}))},[h,n,v]);(0,c.useEffect)(()=>{!h&&r.length>0&&v(l)},[r,h,v,l]);let x=(e,t)=>e===`hueRotate`?`${Math.round(t)}°`:t.toFixed(2);return(0,p.jsxs)(`div`,{className:`mapbox-raster-paint-control${i?` ${i}`:``}`,style:a,children:[(0,p.jsxs)(`button`,{ref:f,className:`mapbox-control-btn mapbox-raster-paint-control__btn${o?` mapbox-raster-paint-control__btn--active`:``}`,onClick:()=>s(!o),title:`栅格渲染调节`,children:[(0,p.jsx)(`img`,{className:`mapbox-control-btn__icon mapbox-raster-paint-control__btn-icon`,src:Ze,alt:`raster paint`}),(0,p.jsx)(`span`,{children:`渲染`})]}),o&&(0,p.jsxs)(`div`,{ref:d,className:`mapbox-raster-paint-control__panel`,children:[Qe.map(({key:e,label:t,min:n,max:r,step:i})=>(0,p.jsxs)(`div`,{className:`mapbox-raster-paint-control__slider-row`,children:[(0,p.jsx)(`span`,{className:`mapbox-raster-paint-control__label`,children:t}),(0,p.jsx)(m.Slider,{className:`mapbox-raster-paint-control__slider`,min:n,max:r,step:i,value:g[e],onChange:t=>y(e,t),tooltipVisible:!1}),(0,p.jsx)(`span`,{className:`mapbox-raster-paint-control__value`,children:x(e,g[e])})]},e)),(0,p.jsx)(`button`,{className:`mapbox-raster-paint-control__reset`,onClick:b,children:`重置`})]})]})}var J=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769397418113'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='10253'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M755.4048%20217.2928A348.3648%20348.3648%200%200%200%20512%20119.3472a348.3136%20348.3136%200%200%200-243.3536%2097.8944%20328.4992%20328.4992%200%200%200-100.864%20236.3392c0%2049.408%2011.7248%2095.744%2032%20137.728a378.0096%20378.0096%200%200%200%2091.136%20118.4256l203.5712%20179.456%2017.5104%2015.4624%2017.5104-15.4624%20203.4176-179.3536a378.6752%20378.6752%200%200%200%2091.2384-118.4768c20.2752-41.984%2032.0512-88.32%2032.0512-137.7792a328.448%20328.448%200%200%200-100.8128-236.288z%20m24.1152%20353.3824a329.216%20329.216%200%200%201-79.872%20103.0656l-188.0064%20164.6592-187.1872-164.7616a329.0624%20329.0624%200%200%201-79.7696-103.0144%20267.0592%20267.0592%200%200%201-27.136-117.0944c0-78.7968%2032.9728-150.1184%2086.272-201.728a298.3936%20298.3936%200%200%201%20208.2816-83.5584c81.3056%200%20154.9824%2031.9488%20208.2304%2083.6096a279.9104%20279.9104%200%200%201%2086.272%20201.728%20266.496%20266.496%200%200%201-27.0848%20117.0944z%20m-164.1472-212.1728l0.0512-0.0512a146.9952%20146.9952%200%200%200-104.2432-43.2128c-40.6528%200-77.568%2016.5376-104.2432%2043.2128l0.0512%200.0512a147.3536%20147.3536%200%200%200-0.0512%20208.6912%20147.0464%20147.0464%200%200%200%20208.4864%200%20147.5072%20147.5072%200%200%200-0.0512-208.6912z%20m-34.1504%20174.2336a97.536%2097.536%200%200%201-69.2736%2028.7232%2097.6384%2097.6384%200%200%201-69.3248-28.7232%2097.792%2097.792%200%200%201-0.1536-138.4448h0.1024a97.9456%2097.9456%200%200%201%20138.5984%200h0.1536c17.664%2017.6128%2028.5696%2042.1376%2028.5696%2069.2224a97.1776%2097.1776%200%200%201-28.672%2069.2224z'%20fill='%23ffffff'%20p-id='10254'%3e%3c/path%3e%3c/svg%3e`;const et=({markerTemplates:e,selectedTemplate:t,onTemplateSelect:n,drawMode:r,onDrawModeChange:i,showRectangleTool:a=!1,showCircleTool:o=!1,showPolygonTool:s=!1,showSquareTool:l=!1,showPolylineTool:u=!1})=>{let[d,f]=(0,c.useState)(!1),m=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=e=>{m.current&&!m.current.contains(e.target)&&f(!1)};if(d)return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[d]);let h=e=>{t?.id===e.id?(n(null),i(null)):(n(e),i(`marker`)),f(!1)},g=()=>{r===`rectangle`?i(null):(n(null),i(`rectangle`))},_=()=>{r===`circle`?i(null):(n(null),i(`circle`))},v=()=>{r===`polygon`?i(null):(n(null),i(`polygon`))},y=()=>{r===`square`?i(null):(n(null),i(`square`))},b=()=>{r===`polyline`?i(null):(n(null),i(`polyline`))},x=()=>{(r===`rectangle`||r===`circle`||r===`polygon`||r===`square`||r===`polyline`)&&i(null),f(!d)},S=e=>e.size?{width:e.size,height:e.size}:{width:e.width||32,height:e.height||32},C=d||t,w=r===`rectangle`,T=r===`circle`,E=r===`polygon`,D=r===`square`,O=r===`polyline`;return(0,p.jsxs)(`div`,{ref:m,className:`mapbox-edit-control`,children:[(0,p.jsxs)(`div`,{className:`mapbox-edit-control__btn-group`,children:[(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${C?`mapbox-control-btn--active`:``}`,onClick:x,title:`Marker`,children:[t?(0,p.jsx)(`img`,{src:t.icon,alt:t.name,className:`mapbox-edit-control__btn-icon`}):(0,p.jsx)(`img`,{src:J,alt:`marker`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:t?t.name:`Marker`})]}),l&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${D?`mapbox-control-btn--active`:``}`,onClick:y,title:`绘制正方形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`square`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`正方形`})]}),a&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${w?`mapbox-control-btn--active`:``}`,onClick:g,title:`绘制矩形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`rectangle`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`矩形`})]}),o&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${T?`mapbox-control-btn--active`:``}`,onClick:_,title:`绘制圆形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`circle`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`圆形`})]}),s&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${E?`mapbox-control-btn--active`:``}`,onClick:v,title:`绘制多边形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e`,alt:`polygon`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`多边形`})]}),u&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${O?`mapbox-control-btn--active`:``}`,onClick:b,title:`绘制折线`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e`,alt:`polyline`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`折线`})]})]}),d&&(0,p.jsxs)(`div`,{className:`mapbox-edit-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-edit-control__panel-header`,children:`选择 Marker`}),(0,p.jsx)(`div`,{className:`mapbox-edit-control__template-list`,children:e.map(e=>{let n=S(e),r=t?.id===e.id;return(0,p.jsxs)(`div`,{className:`mapbox-edit-control__template-item ${r?`mapbox-edit-control__template-item--selected`:``}`,onClick:()=>h(e),title:e.name,children:[(0,p.jsx)(`img`,{src:e.icon,alt:e.name,className:`mapbox-edit-control__template-icon`,style:{width:Math.min(n.width,24),height:Math.min(n.height,24)}}),(0,p.jsx)(`span`,{className:`mapbox-edit-control__template-name`,children:e.name})]},e.id)})})]})]})},tt=({menuState:e,onClose:t,portalContainer:n,menuRef:r})=>{let i=(0,c.useRef)(null);(0,c.useEffect)(()=>(r&&(r.current=i.current),()=>{r&&(r.current=null)}));let a=(0,c.useCallback)(e=>{i.current&&!i.current.contains(e.target)&&t()},[t]),o=(0,c.useCallback)(e=>{e.key===`Escape`&&t()},[t]);(0,c.useEffect)(()=>{let e=setTimeout(()=>{document.addEventListener(`click`,a,!0),document.addEventListener(`contextmenu`,a,!0)},0);return document.addEventListener(`keydown`,o),()=>{clearTimeout(e),document.removeEventListener(`click`,a,!0),document.removeEventListener(`contextmenu`,a,!0),document.removeEventListener(`keydown`,o)}},[a,o]);let s={...e.position};if(i.current){let e=i.current.getBoundingClientRect();s.x+e.width>window.innerWidth&&(s.x=window.innerWidth-e.width-10),s.y+e.height>window.innerHeight&&(s.y=window.innerHeight-e.height-10)}let l=(0,p.jsx)(`div`,{ref:i,className:`context-menu`,style:{position:`fixed`,left:`${s.x}px`,top:`${s.y}px`,pointerEvents:`all`},children:e.items.map(e=>(0,p.jsxs)(`div`,{className:`context-menu__item ${e.danger?`context-menu__item--danger`:``}`,onClick:()=>{e.onClick(),t()},children:[e.icon&&(0,p.jsx)(`span`,{className:`context-menu__item-icon`,children:e.icon}),(0,p.jsx)(`span`,{className:`context-menu__item-label`,children:e.label})]},e.key))});return(0,f.createPortal)(l,n)};var nt=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1775031767174'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='30653'%20data-spm-anchor-id='a313x.search_index.0.i6.78953a81FCkAe0'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='64'%20height='64'%3e%3cpath%20d='M322.24%20479.210667l-42.453333-42.432%20198.826666-198.826667c53.397333-53.376%20139.306667-53.568%20191.914667-0.981333%2052.608%2052.608%2052.416%20138.517333-0.981333%20191.914666L455.722667%20642.709333l-42.432-42.453333%20213.824-213.802667a74.773333%2074.773333%200%200%200-0.341334-105.728%2074.773333%2074.773333%200%200%200-105.728-0.341333l-198.826666%20198.826667z'%20fill='%23ffffff'%20p-id='30654'%3e%3c/path%3e%3cpath%20d='M699.093333%20613.333333l42.453334%2042.432-169.429334%20169.408c-48.341333%2048.341333-129.28%2042.282667-181.248-9.664-51.968-51.968-58.026667-132.906667-9.664-181.248l234.346667-234.346666%2042.432%2042.410666L423.616%20676.693333c-22.250667%2022.250667-19.050667%2065.024%2011.008%2095.061334%2030.037333%2030.058667%2072.810667%2033.258667%2095.061333%2010.986666l169.429334-169.408zM187.989333%20571.029333c-38.933333-38.933333-38.805333-102.613333%200.853334-142.293333%2039.68-39.68%20103.381333-39.808%20142.293333-0.853333%2038.954667%2038.912%2038.826667%20102.613333-0.853333%20142.293333-39.68%2039.658667-103.381333%2039.786667-142.293334%200.853333z%20m43.733334-43.733333c15.744%2015.744%2040.874667%2015.68%2056.128%200.426667%2015.253333-15.232%2015.296-40.362667-0.426667-56.106667-15.765333-15.744-40.896-15.701333-56.149333-0.448-15.232%2015.232-15.296%2040.384%200.448%2056.106667z'%20fill='%23ffffff'%20p-id='30655'%3e%3c/path%3e%3cpath%20d='M846.144%20489.728l-31.466667%20198.784-56.96-101.461333-104.042666-38.506667z'%20fill='%23ffffff'%20p-id='30656'%3e%3c/path%3e%3c/svg%3e`,Y=`route-planning-temp-line`,rt=`route-planning-temp-line-layer`,X=`route-planning-temp-point-layer`;const it=(0,c.forwardRef)(({map:e,pointCount:t=2,showPointCountInput:n=!1,visualType:r=`marker`,onSelectFinished:i,showButton:a=!0},o)=>{let[s,u]=(0,c.useState)(`idle`),[d,f]=(0,c.useState)(0),[m,h]=(0,c.useState)(t),[g,_]=(0,c.useState)(!1),v=(0,c.useRef)(null),y=(0,c.useRef)(null),b=(0,c.useRef)([]),x=(0,c.useRef)([]),S=(0,c.useRef)(`idle`),C=(0,c.useRef)(null),w=(0,c.useRef)(``);(0,c.useEffect)(()=>{S.current=s},[s]),(0,c.useEffect)(()=>{h(t)},[t]),(0,c.useEffect)(()=>{if(!g)return;let e=e=>{y.current&&!y.current.contains(e.target)&&v.current&&!v.current.contains(e.target)&&_(!1)},t=setTimeout(()=>{document.addEventListener(`mousedown`,e)},0);return()=>{clearTimeout(t),document.removeEventListener(`mousedown`,e)}},[g]);let T=(0,c.useCallback)(()=>{for(let e of x.current)e.remove();x.current=[],e&&(e.getLayer(rt)&&e.removeLayer(rt),e.getLayer(X)&&e.removeLayer(X),e.getSource(Y)&&e.removeSource(Y))},[e]),E=(0,c.useCallback)(()=>{if(!e)return;let t=b.current,n={type:`FeatureCollection`,features:[{type:`Feature`,properties:{},geometry:{type:`LineString`,coordinates:t.length>=2?t:[]}},...t.map((e,t)=>({type:`Feature`,properties:{index:t},geometry:{type:`Point`,coordinates:e}}))]},r=e.getSource(Y);r?r.setData(n):(e.addSource(Y,{type:`geojson`,data:n}),e.addLayer({id:rt,type:`line`,source:Y,filter:[`==`,`$type`,`LineString`],paint:{"line-color":`#4A90D9`,"line-width":3,"line-dasharray":[2,2]}}),e.addLayer({id:X,type:`circle`,source:Y,filter:[`==`,`$type`,`Point`],paint:{"circle-radius":6,"circle-color":`#4A90D9`,"circle-stroke-width":2,"circle-stroke-color":`#fff`}}))},[e]),D=(0,c.useCallback)(t=>{if(!e||!C.current)return;let{visualType:n}=C.current;if(n===`marker`){let n=document.createElement(`div`);n.className=`route-planning-temp-marker`,n.textContent=String(b.current.length);let r=new l.default.Marker({element:n}).setLngLat(t).addTo(e);x.current.push(r)}else E()},[e,E]),O=(0,c.useCallback)(()=>{if(T(),b.current=[],C.current=null,f(0),u(`idle`),e)try{e.getCanvas().style.cursor=w.current}catch{}},[T,e]),k=(0,c.useCallback)(async()=>{let e=C.current,t=[...b.current];if(!e||t.length<2){O();return}u(`planning`);try{await e.onSelectFinished(t)}catch(e){console.error(`Route planning onSelectFinished failed:`,e)}finally{O()}},[O]),ee=(0,c.useCallback)(e=>{if(S.current!==`selecting`||!C.current)return;let t=[e.lngLat.lng,e.lngLat.lat];b.current.push(t);let n=b.current.length;f(n),D(t),n>=C.current.pointCount&&k()},[D,k]),A=(0,c.useCallback)(e=>{S.current===`selecting`&&(e.preventDefault(),O())},[O]);(0,c.useEffect)(()=>{if(e&&s===`selecting`)return e.on(`click`,ee),e.on(`contextmenu`,A),()=>{if(e)try{e.off(`click`,ee),e.off(`contextmenu`,A)}catch{}}},[e,s,ee,A]);let j=(0,c.useCallback)(n=>{if(!e)return;S.current!==`idle`&&O();let i=Math.max(2,n.pointCount??t),a=n.visualType??r;C.current={pointCount:i,visualType:a,onSelectFinished:n.onSelectFinished},b.current=[],f(0),h(i),_(!1),w.current=e.getCanvas().style.cursor,e.getCanvas().style.cursor=`crosshair`,u(`selecting`)},[e,t,r,O]);(0,c.useImperativeHandle)(o,()=>({startPlanning:j}),[j]);let M=()=>{s===`idle`?_(e=>!e):s===`selecting`&&O()},te=()=>{i&&j({pointCount:Math.max(2,m),visualType:r,onSelectFinished:i})},ne=e=>{let t=parseInt(e.target.value,10);!isNaN(t)&&t>=2?h(t):e.target.value===``&&h(2)},N=()=>{if(s===`planning`)return(0,p.jsx)(`span`,{children:`规划中...`});if(s===`selecting`){let e=C.current?.pointCount??m;return(0,p.jsxs)(`span`,{children:[d,`/`,e]})}return`路径规划`},P=s===`selecting`,re=s===`planning`;return!a&&s===`idle`?null:(0,p.jsxs)(`div`,{className:`mapbox-route-planning-control${a?``:` mapbox-route-planning-control--floating`}`,children:[(0,p.jsxs)(`button`,{ref:v,className:`mapbox-control-btn mapbox-route-planning-control__btn${P?` mapbox-route-planning-control__btn--active`:``}${re?` mapbox-route-planning-control__btn--planning`:``}${g?` mapbox-route-planning-control__btn--active`:``}`,onClick:M,disabled:re,title:s===`idle`?`路径规划`:s===`selecting`?`取消选点`:`规划中...`,children:[(0,p.jsx)(`img`,{src:nt,alt:`route`,className:`mapbox-route-planning-control__btn-icon`}),N()]}),g&&s===`idle`&&(0,p.jsxs)(`div`,{ref:y,className:`mapbox-route-planning-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-route-planning-control__panel-header`,children:(0,p.jsx)(`span`,{className:`mapbox-route-planning-control__panel-title`,children:`路径规划`})}),(0,p.jsxs)(`div`,{className:`mapbox-route-planning-control__panel-body`,children:[(0,p.jsxs)(`div`,{className:`mapbox-route-planning-control__panel-row`,children:[(0,p.jsx)(`span`,{className:`mapbox-route-planning-control__panel-label`,children:`选点数量`}),n?(0,p.jsx)(`input`,{type:`number`,className:`mapbox-route-planning-control__panel-input`,value:m,min:2,onChange:ne}):(0,p.jsx)(`span`,{className:`mapbox-route-planning-control__panel-value`,children:m})]}),(0,p.jsx)(`div`,{className:`mapbox-route-planning-control__panel-tip`,children:`左键点击地图选点,右键取消`}),(0,p.jsx)(`button`,{className:`mapbox-route-planning-control__panel-start`,onClick:te,disabled:!i,children:`开始规划`})]})]})]})});it.displayName=`RoutePlanningControl`;function at(e,t,n){return{content:e.content??n??null,trigger:e.trigger??t?.trigger??T.trigger,position:e.position??t?.position??T.position,offset:e.offset??t?.offset??T.offset,showCloseButton:e.showCloseButton??t?.showCloseButton??T.showCloseButton,animation:e.animation??t?.animation??T.animation,className:e.className??``,style:e.style??{},closeOnClickOutside:e.closeOnClickOutside??t?.closeOnClickOutside??T.closeOnClickOutside,closeOnEscape:e.closeOnEscape??t?.closeOnEscape??T.closeOnEscape,hoverDelay:e.hoverDelay??t?.hoverDelay??T.hoverDelay,maxWidth:e.maxWidth??t?.maxWidth??T.maxWidth,zIndex:e.zIndex??t?.zIndex??T.zIndex}}function ot(e,t,n,r,i){let a,o;if(e.type===`polygon`)o=e.center??st(e.coordinates);else if(e.type===`polyline`)o=e.center??ct(e.coordinates);else if(e.type===`rectangle`)if(e.center)o=e.center;else{let[[t,n],[r,i]]=e.bounds;o=[(t+r)/2,(n+i)/2]}else if(e.type===`attack-direction`){let t=e.coordinates;o=e.center??[(t[0][0]+t[1][0]+t[2][0])/3,(t[0][1]+t[1][1]+t[2][1])/3]}else o=e.center;if(!o)return{position:{x:0,y:0},actualPosition:t.position};let s=n.project(o);a={x:s.x,y:s.y};let c=lt(i,t);return ut(a,t.position,t.offset,c)}function st(e){if(!e||e.length===0)return[0,0];let t=[...e];(e[0][0]!==e[e.length-1][0]||e[0][1]!==e[e.length-1][1])&&t.push(e[0]);let n=(0,u.polygon)([t]);return(0,u.centroid)(n).geometry.coordinates}function ct(e){if(!e||e.length===0)return[0,0];let t=0,n=0;for(let r of e)t+=r[0],n+=r[1];return[t/e.length,n/e.length]}function lt(e,t){if(e){let t=e.getBoundingClientRect();return{width:t.width||320,height:t.height||200}}return{width:typeof t.maxWidth==`number`?t.maxWidth:320,height:200}}function ut(e,t,n,r){let i={width:window.innerWidth,height:window.innerHeight},a=(()=>{switch(t){case`top`:return[`top`,`bottom`,`right`,`left`,`center`];case`bottom`:return[`bottom`,`top`,`right`,`left`,`center`];case`left`:return[`left`,`right`,`top`,`bottom`,`center`];case`right`:return[`right`,`left`,`top`,`bottom`,`center`];case`center`:default:return[`center`,`top`,`bottom`,`left`,`right`]}})(),o={top:()=>({x:e.x-r.width/2+n[0],y:e.y-r.height-20+n[1]}),bottom:()=>({x:e.x-r.width/2+n[0],y:e.y+20+n[1]}),left:()=>({x:e.x-r.width-20+n[0],y:e.y-r.height/2+n[1]}),right:()=>({x:e.x+20+n[0],y:e.y-r.height/2+n[1]}),center:()=>({x:e.x-r.width/2+n[0],y:e.y-r.height/2+n[1]})},s=e=>e.x>=10&&e.y>=10&&e.x+r.width+10<=i.width&&e.y+r.height+10<=i.height;for(let e of a){let t=o[e]();if(s(t))return{position:t,actualPosition:e}}let c=o[t]();return{position:dt(c,r),actualPosition:t}}function dt(e,t){let n={width:window.innerWidth,height:window.innerHeight},r={...e};return r.x+t.width+10>n.width&&(r.x=n.width-t.width-10),r.x<10&&(r.x=10),r.y+t.height+10>n.height&&(r.y=n.height-t.height-10),r.y<10&&(r.y=10),r}const ft=(0,c.forwardRef)((e,t)=>{let{center:n=[116.4074,39.9042],zoom:r=12,pitch:i=0,bearing:a=0,style:o=`mapbox://styles/mapbox/dark-v11`,maxBounds:s,mode:u=`display`,editConfig:d={},pickerConfig:f={},onPick:m,interactive:h={},layers:g=[],rasterPaint:_,entities:v=[],selectedIds:y=[],entityConfig:b,nameConfig:C,selectNameConfig:w,areaConfig:T,circleConfig:E,lengthConfig:k,showCoordinates:M=!0,showScale:te=!0,showResetView:ne=!0,showRoadHighlight:N=!1,showMeasure:P=!1,showRasterPaint:re=!1,showRoutePlanning:ie,onRasterPaintChange:ae,popupDefaults:F,renderPopup:I,onMapLoad:oe,onEntityClick:ce,onPopupOpen:pe,onPopupClose:me,className:he=``,containerStyle:ve}=e,L=(0,c.useRef)(null),be=(0,c.useRef)(null),Se=(0,c.useRef)(null),R=(0,c.useRef)(null),z=(0,c.useRef)(new Map),B=(0,c.useRef)(new Map),Oe=(0,c.useRef)(new Set),[V,Ae]=(0,c.useState)(null),je=(0,c.useRef)(null),Me=(0,c.useRef)(null),Ne=(0,c.useRef)(null),[Fe,Ie]=(0,c.useState)(null),Le=(0,c.useRef)(null),Re=(0,c.useRef)(null),[ze,Be]=(0,c.useState)(null),[He,Ue]=(0,c.useState)(u),[We,Ge]=(0,c.useState)(null),Ke=(0,c.useRef)(null),[qe,H]=(0,c.useState)(null),[U,W]=(0,c.useState)(null),[Je,Ye]=(0,c.useState)(null),G=(0,c.useRef)(!1),K=(0,c.useRef)(null),Ze=(0,c.useRef)(null),q=(0,c.useRef)(null),Qe=(0,c.useRef)(null),J=(0,c.useRef)(null),nt=(0,c.useRef)([]),Y=(0,c.useRef)(null),rt=(0,c.useRef)(null),X=(0,c.useRef)(null),st=(0,c.useRef)([]),ct=(0,c.useRef)(null),lt=(0,c.useRef)(!1),[ut,dt]=(0,c.useState)([]),ft=(0,c.useRef)([]);ft.current=ut;let Z=(0,c.useRef)(null);(0,c.useEffect)(()=>{Ue(u)},[u]);let pt=(0,c.useCallback)(e=>{let t=z.current.get(e),n=B.current.get(e);if(t&&n){if(n.type===`radar`&&t instanceof se){let r={...n,isAnimating:!0};B.current.set(e,r),t.startAnimation()}else if(n.type===`circle`&&t instanceof xe){let r={...n,isAnimating:!0};B.current.set(e,r),t.startAnimation()}}},[]),mt=(0,c.useCallback)(e=>{let t=z.current.get(e),n=B.current.get(e);if(t&&n){if(n.type===`radar`&&t instanceof se){let r={...n,isAnimating:!1};B.current.set(e,r),t.stopAnimation()}else if(n.type===`circle`&&t instanceof xe){let r={...n,isAnimating:!1};B.current.set(e,r),t.stopAnimation()}}},[]),ht=(0,c.useCallback)(e=>{let t=B.current.get(e);t&&(t.type===`radar`||t.type===`circle`)&&(t.type,t.isAnimating?mt(e):pt(e))},[pt,mt]),gt=(0,c.useCallback)(e=>{if(e===void 0){let e=!1;for(let[,t]of z.current)if(t instanceof de){let n=t.getShowTrajectory();if(n===`all`||typeof n==`number`&&n>0){e=!0;break}}let t=e?0:`all`;for(let[,e]of z.current)e instanceof de&&e.setShowTrajectory(t)}else{let t=new Set(e.map(String));for(let[e,n]of z.current)n instanceof de&&n.setShowTrajectory(t.has(String(e))?`all`:0)}},[]),_t=(0,c.useCallback)((e,t,n)=>{let r=v.find(t=>String(t.id)===String(e));if(!r?.popup||!R.current)return;let i=r.popup.content??I?.(r);if(!i)return;let a=at(r.popup,F,i),{position:o,actualPosition:s}=ot(r,a,R.current,n);Ae({entityId:e,position:o,config:a,openedBy:t,actualPosition:s}),pe?.(e)},[v,F,I,pe]),vt=(0,c.useCallback)(e=>{V?.entityId===e&&(Ae(null),me?.(e))},[V,me]),yt=(0,c.useCallback)(()=>{Ae(e=>(e&&me?.(e.entityId),null))},[me]),bt=(0,c.useCallback)(e=>V?.entityId===e,[V]),xt=(0,c.useCallback)((e,t,n)=>{let r=R.current;r&&r.flyTo({center:e,zoom:t??r.getZoom(),...n})},[]),St=(0,c.useCallback)(e=>{if(e.length===0)return null;let t=1/0,n=-1/0,r=1/0,i=-1/0,a=!1;for(let o of e){let e=z.current.get(o);if(e){let[[o,s],[c,l]]=e.getBounds();t=Math.min(t,o),n=Math.max(n,c),r=Math.min(r,s),i=Math.max(i,l),a=!0}}return a?[(t+n)/2,(r+i)/2]:null},[]),Ct=(0,c.useCallback)((e,t,n)=>{let r=R.current;if(!r||e.length===0)return;let i=St(e);if(!i)return;let a=[];for(let t of e){let e=z.current.get(t);e&&a.push(e.getBounds())}let o=1/0,s=-1/0,c=1/0,l=-1/0;for(let[[e,t],[n,r]]of a)o=Math.min(o,e),s=Math.max(s,n),c=Math.min(c,t),l=Math.max(l,r);let u=o===s&&c===l;if(a.length===1||u){let e={center:i,zoom:t??r.getZoom()};n?.duration!==void 0&&(e.duration=n.duration),n?.pitch!==void 0&&(e.pitch=n.pitch),n?.bearing!==void 0&&(e.bearing=n.bearing),n?.essential!==void 0&&(e.essential=n.essential),r.flyTo(e);return}let d=[[o,c],[s,l]],f={padding:n?.padding??50,duration:n?.duration??1e3,bearing:n?.bearing??r.getBearing(),pitch:n?.pitch??r.getPitch()};t!==void 0&&(f.maxZoom=t),n?.essential!==void 0&&(f.essential=n.essential),r.fitBounds(d,f)},[St]),wt=(0,c.useRef)(null),Tt=(0,c.useRef)(`display`),[Et,Dt]=(0,c.useState)({}),Q=(0,c.useMemo)(()=>({...f,...Et}),[f,Et]),Ot=(0,c.useCallback)(e=>{let t=R.current;if(!t||!t.getContainer())return;let{showMarker:n=!0,markerColor:r=`#3388ff`,name:i,nameConfig:a}=Q;if(!n){Ke.current&&=(Ke.current.remove(),null);return}if(Ke.current){Ke.current.setLngLat(e);let t=Ke.current.getElement(),n=t.querySelector(`.marker-label`);if(i){let e=x(a,C);if(n)n.textContent=i,n.style.color=e.fillColor,n.style.opacity=String(e.fillOpacity),n.style.webkitTextStrokeColor=e.strokeColor,n.style.webkitTextStrokeWidth=`${e.strokeWidth}px`;else{let n=document.createElement(`div`);n.className=`marker-label`,n.textContent=i,n.style.color=e.fillColor,n.style.opacity=String(e.fillOpacity),n.style.webkitTextStrokeColor=e.strokeColor,n.style.webkitTextStrokeWidth=`${e.strokeWidth}px`,t.appendChild(n)}}else n&&n.remove()}else{let n=document.createElement(`div`);n.className=`mapbox-picker-marker`;let o=document.createElement(`div`);if(o.className=`marker-inner`,o.style.background=r,n.appendChild(o),i){let e=x(a,C),t=document.createElement(`div`);t.className=`marker-label`,t.textContent=i,t.style.color=e.fillColor,t.style.opacity=String(e.fillOpacity),t.style.webkitTextStrokeColor=e.strokeColor,t.style.webkitTextStrokeWidth=`${e.strokeWidth}px`,n.appendChild(t)}Ke.current=new l.default.Marker({element:n,anchor:`bottom`}).setLngLat(e).addTo(t)}},[Q,C]),kt=(0,c.useCallback)(()=>{Ke.current&&=(Ke.current.remove(),null)},[]),At=(0,c.useCallback)(()=>`marker-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,[]),jt=(0,c.useCallback)(e=>{let t=R.current;if(L.current)if(ct.current&&=(ct.current.remove(),null),e&&t){t.getCanvas().style.cursor=`none`;let n=document.createElement(`div`);n.className=`mapbox-custom-cursor`;let r=e.size||e.width||32;n.style.cssText=`
|
|
51
|
+
`;O.current||=new l.default.Popup({closeButton:!1,closeOnClick:!1,offset:15,className:`road-highlight-popup`}),O.current.setLngLat(r).setHTML(_).addTo(e),e.getCanvas().style.cursor=`pointer`}else O.current&&O.current.remove(),e.getCanvas().style.cursor=``},[e,v,ee,o]);(0,c.useEffect)(()=>{if(!(!e||!b))return e.on(`mousemove`,A),()=>{if(e)try{e.off(`mousemove`,A),O.current&&O.current.remove(),e.getCanvas().style.cursor=``}catch{}}},[e,b,A]);let j=(e,t)=>{y(n=>t?[...n,e]:n.filter(t=>t!==e))},M=e=>{y(e?E.map(e=>e.class):[])},te=v.length>0,ne=()=>(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control__panel-header`,children:[(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__panel-title`,children:`道路类型`}),(0,p.jsx)(m.Checkbox,{checked:v.length===E.length,indeterminate:v.length>0&&v.length<E.length,onChange:M,style:{"--color-text-1":`#fff`,"--color-border-2":`rgba(255, 255, 255, 0.3)`},children:(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__type-label`,children:`全选`})})]}),(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__scroll`,children:(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__type-list`,children:E.map(e=>(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control__type-item`,onClick:()=>j(e.class,!v.includes(e.class)),children:[(0,p.jsx)(m.Checkbox,{checked:v.includes(e.class),onChange:t=>j(e.class,t),onClick:e=>e.stopPropagation(),style:{"--color-text-1":`#fff`,"--color-border-2":`rgba(255, 255, 255, 0.3)`,marginRight:0,flexShrink:0}}),(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__color-indicator`,style:{backgroundColor:e.color}}),(0,p.jsx)(`span`,{className:`mapbox-road-highlight-control__type-label`,children:e.label})]},e.class))})}),(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__tip`,children:`选中道路类型后立即显示高亮`}),!b&&(0,p.jsx)(`div`,{className:`mapbox-road-highlight-control__warning`,children:`正在初始化图层...`})]});return(0,c.useImperativeHandle)(h,()=>({setPortalContainer:C})),(0,p.jsxs)(p.Fragment,{children:[d&&(0,p.jsxs)(`div`,{className:`mapbox-road-highlight-control ${s}`,style:u,children:[(0,p.jsxs)(`button`,{ref:D,className:`mapbox-control-btn mapbox-road-highlight-control__btn ${te?`mapbox-road-highlight-control__btn--active`:``}`,onClick:()=>_(!g),title:`路网高亮${v.length>0?` (已选 ${v.length})`:``}`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769487141027'%20class='icon'%20viewBox='0%200%201517%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='2644'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='189.625'%20height='128'%3e%3cpath%20d='M1.68121071-242.12320149h1508.24640296v1508.24640298h-1508.24640296z'%20fill='%23ffffff'%20fill-opacity='0'%20p-id='2645'%3e%3c/path%3e%3cpath%20d='M437.30078846%20170.6624h682.66239999v682.6624H437.30078846z'%20fill='%23ffffff'%20fill-opacity='0'%20p-id='2646'%3e%3c/path%3e%3cpath%20d='M1151.68343834%2040.66710748H373.42829443A81.76345149%2081.76345149%200%200%200%20292.90207634%20121.49379654v784.42363608c0%2040.42218191%2036.92257893%2077.41545989%2080.5262181%2077.4154599h781.6133488a81.76345149%2081.76345149%200%200%200%2080.52621814-80.82668906V121.49379654C1232.08593315%2077.76643404%201195.25172802%2040.66710748%201151.6657636%2040.66710748z%20m-325.39237822%20616.14222197H618.29445458V451.37556451h53.66057906c6.71640976%200%2013.41514477-3.35820487%2020.11387975-6.73408452l97.28189301-100.99359314h134.18679716v208.72127078c-46.96184405%2013.50351858-87.22495312%2053.90802574-97.28189299%20104.4048223z%20m130.7932427-20.23760311c23.50743418%200%2043.65666346%2020.21992834%2043.65666349%2043.76271204a44.50505206%2044.50505206%200%200%201-43.62131391%2043.7803868%2044.50505206%2044.50505206%200%200%201-43.6036392-43.7803868c0-23.54278369%2020.096205-43.76271203%2043.6036392-43.76271204h-0.05302433zM564.63387554%20926.10201142H373.42829443a22.87114272%2022.87114272%200%200%201-16.79102442-6.71640975%2023.04789036%2023.04789036%200%200%201-6.71640975-16.82637394V714.02253578h214.73069002v212.07947564z%20m0-269.31035673H349.92086026V118.13559167c0-10.1453137%2010.05693988-20.2376031%2023.50743417-20.23760309h553.4321645v188.53669194h-147.54891766c-6.69873499%200-13.39747001%203.35820487-20.096205%206.71640977l-97.28189297%2097.653063H460.61789801a26.44144475%2026.44144475%200%200%200-19.08874355%207.79457028%2026.63586714%2026.63586714%200%200%200-7.72387123%2019.1594426c0%2016.80869917%2013.39747001%2026.90098858%2026.81261478%2026.90098857h104.03365227v212.13249995z%20m610.48629795%20245.71454877c0.17674763%206.29221547-2.24469484%2012.37233377-6.68106024%2016.84404869s-10.49880895%206.89315739-16.77334965%206.75175927h-533.42433329v-212.0971504H829.63159021c13.39747001%2057.24855586%2067.07572382%2097.65306301%20127.48806219%2097.653063a128.67227125%20128.67227125%200%200%200%2093.05762473-37.87701612%20129.60903367%20129.60903367%200%200%200%2037.73561801-93.39344522c0-64.00031515-46.96184405-117.8553166-103.98062799-128.00063029v-208.73894554h194.56378599v558.91134088h-3.35820489v-0.05302427z%20m0-616.07152294H980.57406228V97.89798858h171.10937607c13.39747001%200%2023.45440988%2010.07461465%2023.4544099%2023.59580796v164.94088398z'%20fill='%23ffffff'%20p-id='2647'%3e%3c/path%3e%3c/svg%3e`,alt:`road`,className:`mapbox-road-highlight-control__btn-icon`}),(0,p.jsxs)(`span`,{children:[`路网`,v.length>0?` (${v.length})`:``]})]}),g&&(0,p.jsx)(`div`,{ref:T,className:`mapbox-road-highlight-control__panel`,children:ne()})]}),S&&(0,f.createPortal)(ne(),S)]})});Pe.displayName=`RoadHighlightControl`;var Fe=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773733446763'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='1802'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M110.34624%20352.01024a30.72%2030.72%200%201%200%2061.44%200v-38.46144h680.42752v38.5024a30.72%2030.72%200%200%200%2061.44%200V213.72928a30.72%2030.72%200%200%200-61.44%200v38.33856H171.78624v-38.33856a30.72%2030.72%200%200%200-61.44%200v138.28096z%20m34.816%20127.22176a34.816%2034.816%200%200%200-34.816%2034.816v312.60672c0%2019.2512%2015.5648%2034.816%2034.816%2034.816h733.5936c19.2512%200%2034.816-15.5648%2034.816-34.816V514.048a34.816%2034.816%200%200%200-34.816-34.816H145.2032z%20m26.624%20320.79872V540.672h680.3456v259.35872H171.8272z'%20fill='white'%20p-id='1804'%3e%3c/path%3e%3c/svg%3e`,Ie=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,Le=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,Re=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,ze=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Be=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e`,Ve=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`;function He(e){if(e.type===`circle`)return A(Math.PI*e.radius*e.radius);if(e.type===`square`)return A(e.length*e.length);if(e.type===`rectangle`){let[[t,n],[r,i]]=e.bounds,a=[Math.min(t,r),Math.max(n,i)],o=[Math.max(t,r),Math.max(n,i)],s=[Math.max(t,r),Math.min(n,i)],c=O(a,o),l=O(o,s);return A(c*l)}if(e.type===`polygon`){let t=[...e.coordinates,e.coordinates[0]];return A(ee(t))}}function Ue(e){if(e.type===`circle`)return j(e.radius);if(e.type===`square`)return j(e.length);if(e.type===`rectangle`){let[[t,n],[r,i]]=e.bounds,a=[Math.min(t,r),Math.max(n,i)],o=[Math.max(t,r),Math.max(n,i)],s=[Math.max(t,r),Math.min(n,i)],c=O(a,o),l=O(o,s);return j(2*(c+l))}if(e.type===`polygon`){let t=0,n=e.coordinates;for(let e=0;e<n.length;e++)t+=O(n[e],n[(e+1)%n.length]);return j(t)}if(e.type===`polyline`){let t=0;for(let n=0;n<e.coordinates.length-1;n++)t+=O(e.coordinates[n],e.coordinates[n+1]);return j(t)}}var We={square:`正方形`,rectangle:`矩形`,circle:`圆形`,polygon:`多边形`,polyline:`折线`},Ge=[{mode:`square`,icon:Ie,label:`正方形`},{mode:`rectangle`,icon:Le,label:`矩形`},{mode:`circle`,icon:Re,label:`圆形`},{mode:`polygon`,icon:ze,label:`多边形`},{mode:`polyline`,icon:Be,label:`折线`}];function Ke(e,t){let[n,r]=e,[i,a]=t,o=(a-r)*Math.PI/180,s=(i-n)*Math.PI/180,c=Math.sin(o/2)*Math.sin(o/2)+Math.cos(r*Math.PI/180)*Math.cos(a*Math.PI/180)*Math.sin(s/2)*Math.sin(s/2);return 6371e3*(2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c)))}function qe(e,t,n=64){let[r,i]=e,a=[],o=t/6371e3,s=i*Math.PI/180;for(let e=0;e<=n;e++){let t=e/n*2*Math.PI,c=o*Math.cos(t),l=o*Math.sin(t)/Math.cos(s);a.push([r+l*180/Math.PI,i+c*180/Math.PI])}return a}function H(e,t){let[n,r]=e,i=t/2/6371e3,a=r*Math.PI/180,o=i*180/Math.PI,s=i*180/Math.PI/Math.cos(a);return[[n-s,r+o],[n+s,r+o],[n+s,r-o],[n-s,r-o],[n-s,r+o]]}var U=`measure-`;function W(e,t){e.getSource(t)||e.addSource(t,{type:`geojson`,data:{type:`FeatureCollection`,features:[]}})}function Je(e,t){let n=e.getSource(t);n&&n.setData({type:`FeatureCollection`,features:[]})}function Ye(e){if(!e.getStyle().glyphs){let t=e.style,n=`/gis-fonts/{fontstack}/{range}.pbf`;t.glyphs=n,t.stylesheet&&(t.stylesheet.glyphs=n)}}function G(e){Ye(e);for(let t of[`rect`,`circle`,`square`,`polygon`]){let n=`${U}${t}-preview-source`,r=`${U}${t}-preview-fill`,i=`${U}${t}-preview-line`,a=`${U}${t}-preview-measure-source`,o=`${U}${t}-preview-measure-label`;W(e,n),e.getLayer(r)||e.addLayer({id:r,type:`fill`,source:n,paint:{"fill-color":`#3388ff`,"fill-opacity":.1}}),e.getLayer(i)||e.addLayer({id:i,type:`line`,source:n,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),W(e,a),e.getLayer(o)||e.addLayer({id:o,type:`symbol`,source:a,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0,0,0,0.8)`,"text-halo-width":1}})}let t=`${U}polyline-preview-source`,n=`${U}polyline-preview-line`,r=`${U}polyline-vertices-source`,i=`${U}polyline-vertices`,a=`${U}polyline-preview-measure-source`,o=`${U}polyline-preview-measure-label`;W(e,t),e.getLayer(n)||e.addLayer({id:n,type:`line`,source:t,paint:{"line-color":`#3388ff`,"line-width":2,"line-dasharray":[4,4]}}),W(e,r),e.getLayer(i)||e.addLayer({id:i,type:`circle`,source:r,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}}),W(e,a),e.getLayer(o)||e.addLayer({id:o,type:`symbol`,source:a,filter:[`==`,`$type`,`Point`],layout:{"text-field":[`get`,`label`],"text-size":12,"text-font":[`Open Sans Bold`,`Arial Unicode MS Bold`],"text-allow-overlap":!0,"text-offset":[0,-.8]},paint:{"text-color":`#ffffff`,"text-halo-color":`rgba(0,0,0,0.8)`,"text-halo-width":1}});let s=`${U}polygon-vertices-source`,c=`${U}polygon-vertices`;W(e,s),e.getLayer(c)||e.addLayer({id:c,type:`circle`,source:s,paint:{"circle-radius":5,"circle-color":`#3388ff`,"circle-stroke-color":`#ffffff`,"circle-stroke-width":2}});let l=`${U}circle-radius-source`,u=`${U}circle-radius-line`;W(e,l),e.getLayer(u)||e.addLayer({id:u,type:`line`,source:l,paint:{"line-color":`#ffffff`,"line-width":1,"line-dasharray":[4,4]}})}function K(e){for(let t of[`rect-preview-source`,`rect-preview-measure-source`,`circle-preview-source`,`circle-preview-measure-source`,`circle-radius-source`,`square-preview-source`,`square-preview-measure-source`,`polygon-preview-source`,`polygon-preview-measure-source`,`polygon-vertices-source`,`polyline-preview-source`,`polyline-preview-measure-source`,`polyline-vertices-source`])Je(e,`${U}${t}`)}function Xe({map:e,entityConfig:t,onEntityConfigChange:n,onDrawModeChange:r,className:i=``,style:a}){let[o,s]=(0,c.useState)(!1),[l,u]=(0,c.useState)(null),[d,f]=(0,c.useState)({showArea:!0,showLength:!0,showRadius:!0}),h=t!==void 0,g=h?{showArea:t.showArea??!0,showLength:t.showLength??!0,showRadius:t.showRadius??!0}:d,[_,v]=(0,c.useState)([]),y=(0,c.useRef)(new Map),b=(0,c.useRef)(0),x=(0,c.useRef)(null),C=(0,c.useRef)(null),w=(0,c.useRef)(null),T=(0,c.useRef)(null),E=(0,c.useRef)(null),k=(0,c.useRef)([]),M=(0,c.useRef)([]),te=(0,c.useRef)(g);te.current=g;let ne=(0,c.useRef)(l);ne.current=l;let N=(0,c.useCallback)(()=>`measure-${++b.current}`,[]);(0,c.useEffect)(()=>{r?.(l!==null)},[l,r]);let P=(0,c.useRef)(!1),re=(0,c.useCallback)(()=>{!e||!e.isStyleLoaded()||(G(e),P.current=!0)},[e]);(0,c.useEffect)(()=>{if(!e)return;let t=()=>{G(e),P.current=!0};e.isStyleLoaded()?t():e.once(`load`,t);let n=()=>{P.current=!1};return e.on(`style.load`,n),()=>{if(e)try{e.off(`style.load`,n)}catch{}}},[e]),(0,c.useEffect)(()=>{let e=e=>{x.current&&!x.current.contains(e.target)&&C.current&&!C.current.contains(e.target)&&s(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let ie=(0,c.useCallback)(t=>{if(!e)return;let n=S(t,te.current),r=null;if(n.type===`circle`?r=new ye(e,n):n.type===`square`?r=new Ce(e,n):n.type===`rectangle`?r=new we(e,n):n.type===`polygon`?r=new fe(e,n):n.type===`polyline`&&(r=new _e(e,n)),r){y.current.set(n.id,r);let e={entity:n,shapeLabel:We[n.type]||n.type,area:He(n),lengthOrRadius:Ue(n)};v(t=>[...t,e])}},[e]),ae=(0,c.useCallback)(e=>{let t=y.current.get(e);t&&(t.destroy(),y.current.delete(e)),v(t=>t.filter(t=>t.entity.id!==e))},[]),F=(0,c.useCallback)(()=>{y.current.forEach(e=>e.destroy()),y.current.clear(),v([])},[]),I=(0,c.useCallback)(t=>{if(!e)return;let n=y.current.get(t);if(!n)return;let r=n.getBounds();e.fitBounds(r,{padding:80,maxZoom:18,duration:1e3})},[e]),oe=(0,c.useCallback)((e,t)=>{let r={...te.current,[e]:t};h?n?.({...r}):f(r),v(t=>t.map(t=>{let n={...t.entity};n[e]=void 0;let i=S(n,r),a=y.current.get(t.entity.id);return a&&a.update(i),{...t,entity:i}}))},[h,n]),se=(0,c.useCallback)((t,n)=>{if(!e)return;let[r,i]=t,[a,o]=n,s=[[Math.min(r,a),Math.max(i,o)],[Math.max(r,a),Math.max(i,o)],[Math.max(r,a),Math.min(i,o)],[Math.min(r,a),Math.min(i,o)],[Math.min(r,a),Math.max(i,o)]],c=e.getSource(`${U}rect-preview-source`);c&&c.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[s]},properties:{}});let l=e.getSource(`${U}rect-preview-measure-source`);if(l){let e=te.current,t=[],n=s[0],r=s[1],i=s[2];if(e?.showArea){let e=O(n,r),a=O(r,i);t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:A(e*a)}})}e?.showLength&&(t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+r[0])/2,(n[1]+r[1])/2]},properties:{label:j(O(n,r))}}),t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(r[0]+i[0])/2,(r[1]+i[1])/2]},properties:{label:j(O(r,i))}})),l.setData({type:`FeatureCollection`,features:t})}},[e]),ce=(0,c.useCallback)((t,n)=>{if(!e)return;let r=Ke(t,n),i=qe(t,r),a=e.getSource(`${U}circle-preview-source`);a&&a.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[i]},properties:{}});let o=te.current,s=[],c=[];if(o?.showArea&&s.push({type:`Feature`,geometry:{type:`Point`,coordinates:t},properties:{label:A(Math.PI*r*r)}}),o?.showRadius){let e=D(t,r,90),n=[(t[0]+e[0])/2,(t[1]+e[1])/2];c.push({type:`Feature`,geometry:{type:`LineString`,coordinates:[t,e]},properties:{}}),s.push({type:`Feature`,geometry:{type:`Point`,coordinates:n},properties:{label:j(r)}})}let l=e.getSource(`${U}circle-preview-measure-source`);l&&l.setData({type:`FeatureCollection`,features:s});let u=e.getSource(`${U}circle-radius-source`);u&&u.setData({type:`FeatureCollection`,features:c})},[e]),le=(0,c.useCallback)((t,n)=>{if(!e)return;let r=Ke(t,n)*2,i=H(t,r),a=e.getSource(`${U}square-preview-source`);a&&a.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[i]},properties:{}});let o=e.getSource(`${U}square-preview-measure-source`);if(o){let e=te.current,n=[];if(e?.showArea&&n.push({type:`Feature`,geometry:{type:`Point`,coordinates:t},properties:{label:A(r*r)}}),e?.showLength){let e=[(i[1][0]+i[2][0])/2,(i[1][1]+i[2][1])/2];n.push({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{label:j(r)}})}o.setData({type:`FeatureCollection`,features:n})}},[e]),ue=(0,c.useCallback)((t,n)=>{if(!e)return;let r=[...t,n],i=e.getSource(`${U}polygon-preview-source`);i&&(r.length>=3?i.setData({type:`Feature`,geometry:{type:`Polygon`,coordinates:[[...r,r[0]]]},properties:{}}):r.length===2?i.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:r},properties:{}}):i.setData({type:`FeatureCollection`,features:[]}));let a=e.getSource(`${U}polygon-vertices-source`);a&&a.setData({type:`FeatureCollection`,features:t.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=e.getSource(`${U}polygon-preview-measure-source`);if(o){let e=te.current,t=[];if(e?.showArea&&r.length>=3){let e=ee([...r,r[0]]),n=0,i=0;for(let e of r)n+=e[0],i+=e[1];n/=r.length,i/=r.length,t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[n,i]},properties:{label:A(e)}})}if(e?.showLength&&r.length>=2){for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:j(O(n,i))}})}if(r.length>=3){let e=r[r.length-1],n=r[0];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(e[0]+n[0])/2,(e[1]+n[1])/2]},properties:{label:j(O(e,n))}})}}o.setData({type:`FeatureCollection`,features:t})}},[e]),de=(0,c.useCallback)((t,n)=>{if(!e)return;let r=[...t,n],i=e.getSource(`${U}polyline-preview-source`);i&&(r.length>=2?i.setData({type:`Feature`,geometry:{type:`LineString`,coordinates:r},properties:{}}):i.setData({type:`FeatureCollection`,features:[]}));let a=e.getSource(`${U}polyline-vertices-source`);a&&a.setData({type:`FeatureCollection`,features:t.map(e=>({type:`Feature`,geometry:{type:`Point`,coordinates:e},properties:{}}))});let o=e.getSource(`${U}polyline-preview-measure-source`);if(o){let e=te.current,t=[];if(e?.showLength&&r.length>=2)for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.push({type:`Feature`,geometry:{type:`Point`,coordinates:[(n[0]+i[0])/2,(n[1]+i[1])/2]},properties:{label:j(O(n,i))}})}o.setData({type:`FeatureCollection`,features:t})}},[e]);(0,c.useEffect)(()=>{if(!e||!l)return;re(),e.getCanvas().style.cursor=`crosshair`;let t=t=>{let n=[t.lngLat.lng,t.lngLat.lat],r=ne.current;if(r===`rectangle`){let t=w.current;if(!t)w.current=n;else{let r={id:N(),type:`rectangle`,bounds:[t,n]};ie(r),w.current=null,K(e),u(null)}}else if(r===`circle`){let t=T.current;if(!t)T.current={center:n};else{let r=Ke(t.center,n),i={id:N(),type:`circle`,center:t.center,radius:r};ie(i),T.current=null,K(e),u(null)}}else if(r===`square`){let t=E.current;if(!t)E.current={center:n};else{let r=Ke(t.center,n)*2,i={id:N(),type:`square`,center:t.center,length:r};ie(i),E.current=null,K(e),u(null)}}else if(r===`polygon`){let t=k.current;if(t.length>=3&&Ke(t[0],n)<20){let n={id:N(),type:`polygon`,coordinates:[...t]};ie(n),k.current=[],K(e),u(null);return}k.current=[...t,n]}else r===`polyline`&&(M.current=[...M.current,n])},n=e=>{let t=[e.lngLat.lng,e.lngLat.lat],n=ne.current;if(n===`rectangle`&&w.current)se(w.current,t);else if(n===`circle`&&T.current)ce(T.current.center,t);else if(n===`square`&&E.current)le(E.current.center,t);else if(n===`polygon`){let e=k.current;e.length>0&&ue(e,t)}else if(n===`polyline`){let e=M.current;e.length>0&&de(e,t)}},r=t=>{t.preventDefault();let n=ne.current;if(n===`polygon`){let t=k.current;if(t.length>=3){let n={id:N(),type:`polygon`,coordinates:[...t]};ie(n),k.current=[],K(e),u(null)}else k.current=[],K(e)}else if(n===`polyline`){let t=M.current;if(t.length>=2){let n={id:N(),type:`polyline`,coordinates:[...t]};ie(n),M.current=[],K(e),u(null)}else M.current=[],K(e)}},i=t=>{t.key===`Escape`&&(w.current=null,T.current=null,E.current=null,k.current=[],M.current=[],K(e),u(null))},a=t=>{t.preventDefault();let n=ne.current;if(n===`polygon`){let t=k.current;if(t.length>=3){let n={id:N(),type:`polygon`,coordinates:[...t]};ie(n),k.current=[],K(e),u(null)}}else if(n===`polyline`){let t=M.current;if(t.length>=2){let n={id:N(),type:`polyline`,coordinates:[...t]};ie(n),M.current=[],K(e),u(null)}}};return e.doubleClickZoom.disable(),e.on(`click`,t),e.on(`mousemove`,n),e.on(`contextmenu`,r),e.on(`dblclick`,a),document.addEventListener(`keydown`,i),()=>{if(document.removeEventListener(`keydown`,i),e)try{e.off(`click`,t),e.off(`mousemove`,n),e.off(`contextmenu`,r),e.off(`dblclick`,a),e.getCanvas().style.cursor=``,e.doubleClickZoom.enable(),K(e)}catch{}}},[e,l,N,ie,re,se,ce,le,ue,de]),(0,c.useEffect)(()=>()=>{y.current.forEach(e=>e.destroy()),y.current.clear()},[]);let pe=(0,c.useCallback)(t=>{u(e=>e===t?null:t),w.current=null,T.current=null,E.current=null,k.current=[],M.current=[],e&&K(e)},[e]);return e?(0,p.jsxs)(`div`,{className:`mapbox-measure-control ${i}`,style:a,children:[(0,p.jsxs)(`button`,{ref:C,className:`mapbox-control-btn mapbox-measure-control__btn ${o?`mapbox-measure-control__btn--active`:``}`,onClick:()=>s(!o),title:`测量`,children:[(0,p.jsx)(`img`,{src:Fe,alt:`measure`,className:`mapbox-measure-control__btn-icon`}),(0,p.jsx)(`span`,{children:`测量`}),_.length>0&&(0,p.jsxs)(`span`,{children:[`(`,_.length,`)`]})]}),o&&(0,p.jsxs)(`div`,{ref:x,className:`mapbox-measure-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-measure-control__section-title`,children:`显示设置`}),(0,p.jsxs)(`div`,{className:`mapbox-measure-control__settings`,children:[(0,p.jsx)(m.Checkbox,{checked:g.showArea,onChange:e=>oe(`showArea`,e),children:`面积`}),(0,p.jsx)(m.Checkbox,{checked:g.showLength,onChange:e=>oe(`showLength`,e),children:`长度`}),(0,p.jsx)(m.Checkbox,{checked:g.showRadius,onChange:e=>oe(`showRadius`,e),children:`半径`})]}),(0,p.jsx)(`div`,{className:`mapbox-measure-control__section-title`,children:`绘制工具`}),(0,p.jsxs)(`div`,{className:`mapbox-measure-control__tools`,children:[Ge.map(e=>(0,p.jsx)(`button`,{className:`mapbox-measure-control__tool-btn ${l===e.mode?`mapbox-measure-control__tool-btn--active`:``}`,onClick:()=>pe(e.mode),title:e.label,children:(0,p.jsx)(`img`,{src:e.icon,alt:e.label})},e.mode)),_.length>0&&(0,p.jsx)(`button`,{className:`mapbox-measure-control__tool-btn mapbox-measure-control__tool-btn--danger`,onClick:F,title:`清除全部`,children:(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,alt:`clear`})})]}),_.length>0?(0,p.jsx)(`div`,{className:`mapbox-measure-control__list`,children:(0,p.jsxs)(`table`,{className:`mapbox-measure-control__table`,children:[(0,p.jsx)(`thead`,{children:(0,p.jsxs)(`tr`,{children:[(0,p.jsx)(`th`,{children:`类型`}),(0,p.jsx)(`th`,{children:`ID`}),(0,p.jsx)(`th`,{children:`面积`}),(0,p.jsx)(`th`,{children:`长度/半径`}),(0,p.jsx)(`th`,{})]})}),(0,p.jsx)(`tbody`,{children:_.map(e=>(0,p.jsxs)(`tr`,{className:`mapbox-measure-control__table-row`,onClick:()=>I(e.entity.id),children:[(0,p.jsx)(`td`,{children:e.shapeLabel}),(0,p.jsx)(`td`,{children:String(e.entity.id)}),(0,p.jsx)(`td`,{children:e.area??`-`}),(0,p.jsx)(`td`,{children:e.lengthOrRadius??`-`}),(0,p.jsx)(`td`,{children:(0,p.jsx)(`button`,{className:`mapbox-measure-control__delete-btn`,onClick:t=>{t.stopPropagation(),ae(e.entity.id)},title:`删除`,children:(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e`,alt:`delete`})})})]},String(e.entity.id)))})]})}):(0,p.jsx)(`div`,{className:`mapbox-measure-control__empty`,children:`选择工具后在地图上点击绘制`})]})]}):null}var Ze=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773803353422'%20class='icon'%20viewBox='0%200%201028%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6757'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128.5'%20height='128'%3e%3cpath%20d='M835.073959%20357.94044V345.56192a345.170251%20345.170251%200%201%200-686.690426%2049.672777A345.090902%20345.090902%200%200%200%20523.706588%20974.009826a345.090902%20345.090902%200%201%200%20311.049973-616.069386zM490.141757%2048.001359a297.877959%20297.877959%200%200%201%20297.560561%20297.560561c0%207.934948%200%2016.345994-1.031543%2025.074437A297.639911%20297.639911%200%200%201%20490.141757%20643.122482h-15.869897a289.943011%20289.943011%200%200%201-104.106522-24.757039A297.481212%20297.481212%200%200%201%20490.141757%2048.001359zM345.170251%20976.39031a297.560561%20297.560561%200%200%201-185.281043-530.371944c0%201.031543%200.714145%202.142436%201.031544%203.253328s1.50764%204.522921%202.301135%206.824056c1.269592%203.888125%202.697882%207.934948%204.126173%2011.743724%200.952194%202.301135%201.825038%204.60227%202.697882%206.903405%201.58699%203.808775%203.253329%207.934948%204.919668%2011.505675%200.952194%202.142436%201.904388%204.284872%202.935931%206.347958%201.983737%204.284872%204.126173%208.490395%206.268609%2012.695918l2.380485%204.60227c3.01528%205.633813%206.268609%2011.108928%209.601287%2016.504692%200.793495%201.428291%201.745689%202.777232%202.618533%204.126173%202.539183%204.046824%205.157716%207.934948%207.934948%2011.981772l4.205523%205.792512c2.380484%203.253329%204.760969%206.506658%207.220803%209.680637l4.840318%206.030561c2.459834%203.01528%204.999017%205.951211%207.538201%208.887142l5.157717%205.792512c2.777232%203.01528%205.633813%205.951211%208.569744%208.887142l4.840318%204.999018c4.205523%204.046824%208.411045%207.934948%2012.775267%2011.823073l3.09463%202.618533c4.205523%203.650076%208.490395%207.220803%2012.854616%2010.63283l5.713163%204.205523c3.332678%202.459834%206.586007%204.919668%209.998035%207.220803l6.506657%204.364222q4.999017%203.332678%209.998035%206.427308c2.221786%201.348941%204.443571%202.697882%206.744706%203.967474%203.570727%202.142436%207.300152%204.126173%2010.950229%206.10991l6.18926%203.253329%202.301135%201.269592v12.378519c0%207.379502%200%2014.759004%200.793494%2021.979807%200%202.459834%200.396747%204.840318%200.634796%207.220803%200%204.840318%200.793495%209.759986%201.428291%2014.600305%200%202.777232%200.872844%205.554464%201.269592%208.411045%200.714145%204.364222%201.428291%208.728443%202.221785%2013.013315%200.555446%202.935931%201.190242%205.871862%201.825038%208.728443%200.952194%204.205523%201.904388%207.934948%203.015281%2012.457869s1.50764%205.871862%202.380484%208.728443%202.380484%207.934948%203.729426%2012.140471c0.952194%202.856581%201.825038%205.633813%202.856581%208.490395%201.428291%204.046824%203.01528%207.934948%204.60227%2012.061121%201.110893%202.618533%202.142436%205.316415%203.253329%207.934948%201.825038%204.284872%203.729426%208.411045%205.713163%2012.537219%201.110893%202.301135%202.142436%204.681619%203.332678%206.903405%202.618533%205.316415%205.475114%2010.474132%208.411045%2015.869896%200.555446%201.110893%201.110893%202.221786%201.745689%203.332679%203.570727%206.10991%207.379502%2012.061121%2011.346976%2018.012332%201.269592%201.904388%202.697882%203.808775%204.046824%205.713163%202.777232%203.967474%205.475114%207.934948%208.411045%2011.664374%201.745689%202.301135%203.570727%204.443571%205.395765%206.744706s5.316415%206.586007%207.934948%209.839336%204.046824%204.60227%206.10991%206.824056%205.633813%206.030561%208.490395%209.045841l6.744706%206.586007c2.935931%202.856581%205.871862%205.633813%208.966492%207.934948s4.681619%204.205523%207.062104%206.268609%206.427308%205.316415%209.759986%207.934948%204.760969%203.888125%207.300152%205.713163l2.380485%201.904388A295.894222%20295.894222%200%200%201%20345.170251%20976.39031z%20m335.965711-11.981772a296.608368%20296.608368%200%200%201-146.479145-38.563848c-5.792512-3.332678-11.426326-6.744706-16.90144-10.315433-1.825038-1.190242-3.491377-2.539183-5.237066-3.729426-3.650076-2.459834-7.300152-4.999017-10.79153-7.934948-2.063087-1.50764-3.967474-3.173979-5.871862-4.760969-3.173979-2.459834-6.268609-4.919668-9.283889-7.934949s-3.967474-3.650076-5.951211-5.475114-5.633813-5.078367-7.934949-7.934948-3.808775-4.046824-5.792512-6.10991-5.078367-5.157716-7.458851-7.934949l-5.554464-6.506657c-1.825038-2.142436-4.60227-5.475114-6.824056-7.934949s-3.412028-4.681619-5.157716-7.062104-4.205523-5.633813-6.10991-8.490394-3.253329-4.999017-4.840319-7.458852-3.729426-5.792512-5.475114-8.807792-2.935931-5.157716-4.364222-7.934949-3.332678-6.030561-4.919668-9.045841-2.539183-5.395765-3.808775-7.934948-2.935931-6.18926-4.284872-9.363239-2.301135-5.554464-3.412028-8.411045-2.459834-6.268609-3.570726-9.521938-1.983737-5.792512-2.856582-8.649094-2.063087-6.506658-3.01528-9.759986-1.58699-5.951211-2.301135-8.887142-1.666339-6.586007-2.380485-9.918686S388.812467%20722.471965%20388.812467%20719.536034s-1.190242-6.665357-1.666339-9.998035-0.793495-6.18926-1.110893-9.28389-0.793495-6.824056-1.031543-10.236083%200-6.268609-0.555447-9.363239v-6.665357h0.396748l2.142436%200.634796c4.364222%201.428291%208.807793%202.697882%2013.251363%203.967474l4.840319%201.269592%2011.505675%202.697883%204.52292%201.031543c5.237066%201.031543%2010.474132%201.983737%2015.869897%202.856581h1.348941c4.840318%200.793495%209.759986%201.348941%2014.600305%201.904388l4.919668%200.476097q5.951211%200.634796%2011.902422%200.952194H490.855902a344.456106%20344.456106%200%200%200%20183.138607-52.529358c5.395765-3.412028%2010.71218-7.062104%2015.869896-10.71218%201.745689-1.190242%203.332678-2.539183%205.078367-3.729426%203.412028-2.539183%206.903405-5.157716%2010.236084-7.934948l5.713162-4.760969c3.01528-2.459834%206.030561-4.999017%208.966492-7.934949l5.633813-5.237066c2.856581-2.618533%205.554464-5.237066%207.934949-7.934948l5.475114-5.633813c2.618533-2.697882%205.237066-5.475114%207.934948-8.331696l5.078367-5.713163%207.458851-9.045841%204.522921-5.633813%207.934948-10.315433%203.570727-4.999017c3.173979-4.60227%206.268609-9.363239%209.20454-14.203558l1.031543-1.586989c3.332678-5.475114%206.506658-11.029578%209.601288-16.663392%200.634796-1.190242%201.190242-2.380484%201.745688-3.570727%202.301135-4.443571%204.60227-8.887142%206.665357-13.410062%200.872844-1.825038%201.666339-3.729426%202.539183-5.554464%201.745689-3.967474%203.491377-7.934948%205.078367-11.902422%200.793495-2.063087%201.58699-4.205523%202.459834-6.347959%201.428291-3.808775%202.856581-7.934948%204.126173-11.505675%200.793495-2.221786%201.50764-4.522921%202.221786-6.744706%201.190242-3.808775%202.380484-7.934948%203.491377-11.585025%200.634796-2.301135%201.269592-4.60227%201.825038-6.903405%201.031543-3.967474%201.904388-7.934948%202.777232-11.902422%200.555446-2.301135%201.031543-4.522921%201.50764-6.824056%200-1.031543%200.476097-2.142436%200.634796-3.173979a297.560561%20297.560561%200%200%201-148.304183%20555.446381z'%20fill='%23ffffff'%20p-id='6758'%3e%3c/path%3e%3c/svg%3e`,q={brightness:1,saturation:0,contrast:0,hueRotate:0},Qe=[{key:`brightness`,label:`亮度`,min:0,max:1,step:.01},{key:`saturation`,label:`饱和度`,min:-1,max:1,step:.01},{key:`contrast`,label:`对比度`,min:-1,max:1,step:.01},{key:`hueRotate`,label:`色相`,min:0,max:360,step:1}];function $e({map:e,value:t,onChange:n,rasterPaintLayerIds:r=[],className:i,style:a}){let[o,s]=(0,c.useState)(!1),[l,u]=(0,c.useState)({...q}),d=(0,c.useRef)(null),f=(0,c.useRef)(null),h=t!==void 0;(0,c.useEffect)(()=>{let e=e=>{d.current&&!d.current.contains(e.target)&&f.current&&!f.current.contains(e.target)&&s(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let g=(0,c.useMemo)(()=>h?{brightness:t.brightness??q.brightness,saturation:t.saturation??q.saturation,contrast:t.contrast??q.contrast,hueRotate:t.hueRotate??q.hueRotate}:l,[h,t,l]),_=(0,c.useRef)(h);(0,c.useEffect)(()=>{h&&!_.current&&u({...g}),_.current=h},[h,g]);let v=(0,c.useCallback)(t=>{if(!(!e||r.length===0))for(let n of r)e.getLayer(n)&&(e.setPaintProperty(n,`raster-brightness-min`,0),e.setPaintProperty(n,`raster-brightness-max`,t.brightness),e.setPaintProperty(n,`raster-saturation`,t.saturation),e.setPaintProperty(n,`raster-contrast`,t.contrast),e.setPaintProperty(n,`raster-hue-rotate`,t.hueRotate))},[e,r]),y=(0,c.useCallback)((e,t)=>{if(h)n?.({...g,[e]:t});else{let n={...l,[e]:t};u(n),v(n)}},[h,n,g,l,v]),b=(0,c.useCallback)(()=>{h?n?.({...q}):(u({...q}),v({...q}))},[h,n,v]);(0,c.useEffect)(()=>{!h&&r.length>0&&v(l)},[r,h,v,l]);let x=(e,t)=>e===`hueRotate`?`${Math.round(t)}°`:t.toFixed(2);return(0,p.jsxs)(`div`,{className:`mapbox-raster-paint-control${i?` ${i}`:``}`,style:a,children:[(0,p.jsxs)(`button`,{ref:f,className:`mapbox-control-btn mapbox-raster-paint-control__btn${o?` mapbox-raster-paint-control__btn--active`:``}`,onClick:()=>s(!o),title:`栅格渲染调节`,children:[(0,p.jsx)(`img`,{className:`mapbox-control-btn__icon mapbox-raster-paint-control__btn-icon`,src:Ze,alt:`raster paint`}),(0,p.jsx)(`span`,{children:`渲染`})]}),o&&(0,p.jsxs)(`div`,{ref:d,className:`mapbox-raster-paint-control__panel`,children:[Qe.map(({key:e,label:t,min:n,max:r,step:i})=>(0,p.jsxs)(`div`,{className:`mapbox-raster-paint-control__slider-row`,children:[(0,p.jsx)(`span`,{className:`mapbox-raster-paint-control__label`,children:t}),(0,p.jsx)(m.Slider,{className:`mapbox-raster-paint-control__slider`,min:n,max:r,step:i,value:g[e],onChange:t=>y(e,t),tooltipVisible:!1}),(0,p.jsx)(`span`,{className:`mapbox-raster-paint-control__value`,children:x(e,g[e])})]},e)),(0,p.jsx)(`button`,{className:`mapbox-raster-paint-control__reset`,onClick:b,children:`重置`})]})]})}var J=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769397418113'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='10253'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M755.4048%20217.2928A348.3648%20348.3648%200%200%200%20512%20119.3472a348.3136%20348.3136%200%200%200-243.3536%2097.8944%20328.4992%20328.4992%200%200%200-100.864%20236.3392c0%2049.408%2011.7248%2095.744%2032%20137.728a378.0096%20378.0096%200%200%200%2091.136%20118.4256l203.5712%20179.456%2017.5104%2015.4624%2017.5104-15.4624%20203.4176-179.3536a378.6752%20378.6752%200%200%200%2091.2384-118.4768c20.2752-41.984%2032.0512-88.32%2032.0512-137.7792a328.448%20328.448%200%200%200-100.8128-236.288z%20m24.1152%20353.3824a329.216%20329.216%200%200%201-79.872%20103.0656l-188.0064%20164.6592-187.1872-164.7616a329.0624%20329.0624%200%200%201-79.7696-103.0144%20267.0592%20267.0592%200%200%201-27.136-117.0944c0-78.7968%2032.9728-150.1184%2086.272-201.728a298.3936%20298.3936%200%200%201%20208.2816-83.5584c81.3056%200%20154.9824%2031.9488%20208.2304%2083.6096a279.9104%20279.9104%200%200%201%2086.272%20201.728%20266.496%20266.496%200%200%201-27.0848%20117.0944z%20m-164.1472-212.1728l0.0512-0.0512a146.9952%20146.9952%200%200%200-104.2432-43.2128c-40.6528%200-77.568%2016.5376-104.2432%2043.2128l0.0512%200.0512a147.3536%20147.3536%200%200%200-0.0512%20208.6912%20147.0464%20147.0464%200%200%200%20208.4864%200%20147.5072%20147.5072%200%200%200-0.0512-208.6912z%20m-34.1504%20174.2336a97.536%2097.536%200%200%201-69.2736%2028.7232%2097.6384%2097.6384%200%200%201-69.3248-28.7232%2097.792%2097.792%200%200%201-0.1536-138.4448h0.1024a97.9456%2097.9456%200%200%201%20138.5984%200h0.1536c17.664%2017.6128%2028.5696%2042.1376%2028.5696%2069.2224a97.1776%2097.1776%200%200%201-28.672%2069.2224z'%20fill='%23ffffff'%20p-id='10254'%3e%3c/path%3e%3c/svg%3e`;const et=({markerTemplates:e,selectedTemplate:t,onTemplateSelect:n,drawMode:r,onDrawModeChange:i,showRectangleTool:a=!1,showCircleTool:o=!1,showPolygonTool:s=!1,showSquareTool:l=!1,showPolylineTool:u=!1})=>{let[d,f]=(0,c.useState)(!1),m=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=e=>{m.current&&!m.current.contains(e.target)&&f(!1)};if(d)return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[d]);let h=e=>{t?.id===e.id?(n(null),i(null)):(n(e),i(`marker`)),f(!1)},g=()=>{r===`rectangle`?i(null):(n(null),i(`rectangle`))},_=()=>{r===`circle`?i(null):(n(null),i(`circle`))},v=()=>{r===`polygon`?i(null):(n(null),i(`polygon`))},y=()=>{r===`square`?i(null):(n(null),i(`square`))},b=()=>{r===`polyline`?i(null):(n(null),i(`polyline`))},x=()=>{(r===`rectangle`||r===`circle`||r===`polygon`||r===`square`||r===`polyline`)&&i(null),f(!d)},S=e=>e.size?{width:e.size,height:e.size}:{width:e.width||32,height:e.height||32},C=d||t,w=r===`rectangle`,T=r===`circle`,E=r===`polygon`,D=r===`square`,O=r===`polyline`;return(0,p.jsxs)(`div`,{ref:m,className:`mapbox-edit-control`,children:[(0,p.jsxs)(`div`,{className:`mapbox-edit-control__btn-group`,children:[(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${C?`mapbox-control-btn--active`:``}`,onClick:x,title:`Marker`,children:[t?(0,p.jsx)(`img`,{src:t.icon,alt:t.name,className:`mapbox-edit-control__btn-icon`}):(0,p.jsx)(`img`,{src:J,alt:`marker`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:t?t.name:`Marker`})]}),l&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${D?`mapbox-control-btn--active`:``}`,onClick:y,title:`绘制正方形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`square`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`正方形`})]}),a&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${w?`mapbox-control-btn--active`:``}`,onClick:g,title:`绘制矩形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`rectangle`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`矩形`})]}),o&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${T?`mapbox-control-btn--active`:``}`,onClick:_,title:`绘制圆形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e`,alt:`circle`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`圆形`})]}),s&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${E?`mapbox-control-btn--active`:``}`,onClick:v,title:`绘制多边形`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e`,alt:`polygon`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`多边形`})]}),u&&(0,p.jsxs)(`button`,{className:`mapbox-control-btn ${O?`mapbox-control-btn--active`:``}`,onClick:b,title:`绘制折线`,children:[(0,p.jsx)(`img`,{src:`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e`,alt:`polyline`,className:`mapbox-edit-control__btn-icon mapbox-edit-control__btn-icon--lg`}),(0,p.jsx)(`span`,{children:`折线`})]})]}),d&&(0,p.jsxs)(`div`,{className:`mapbox-edit-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-edit-control__panel-header`,children:`选择 Marker`}),(0,p.jsx)(`div`,{className:`mapbox-edit-control__template-list`,children:e.map(e=>{let n=S(e),r=t?.id===e.id;return(0,p.jsxs)(`div`,{className:`mapbox-edit-control__template-item ${r?`mapbox-edit-control__template-item--selected`:``}`,onClick:()=>h(e),title:e.name,children:[(0,p.jsx)(`img`,{src:e.icon,alt:e.name,className:`mapbox-edit-control__template-icon`,style:{width:Math.min(n.width,24),height:Math.min(n.height,24)}}),(0,p.jsx)(`span`,{className:`mapbox-edit-control__template-name`,children:e.name})]},e.id)})})]})]})},tt=({menuState:e,onClose:t,portalContainer:n,menuRef:r})=>{let i=(0,c.useRef)(null);(0,c.useEffect)(()=>(r&&(r.current=i.current),()=>{r&&(r.current=null)}));let a=(0,c.useCallback)(e=>{i.current&&!i.current.contains(e.target)&&t()},[t]),o=(0,c.useCallback)(e=>{e.key===`Escape`&&t()},[t]);(0,c.useEffect)(()=>{let e=setTimeout(()=>{document.addEventListener(`click`,a,!0),document.addEventListener(`contextmenu`,a,!0)},0);return document.addEventListener(`keydown`,o),()=>{clearTimeout(e),document.removeEventListener(`click`,a,!0),document.removeEventListener(`contextmenu`,a,!0),document.removeEventListener(`keydown`,o)}},[a,o]);let s={...e.position};if(i.current){let e=i.current.getBoundingClientRect();s.x+e.width>window.innerWidth&&(s.x=window.innerWidth-e.width-10),s.y+e.height>window.innerHeight&&(s.y=window.innerHeight-e.height-10)}let l=(0,p.jsx)(`div`,{ref:i,className:`context-menu`,style:{position:`fixed`,left:`${s.x}px`,top:`${s.y}px`,pointerEvents:`all`},children:e.items.map(e=>(0,p.jsxs)(`div`,{className:`context-menu__item ${e.danger?`context-menu__item--danger`:``}`,onClick:()=>{e.onClick(),t()},children:[e.icon&&(0,p.jsx)(`span`,{className:`context-menu__item-icon`,children:e.icon}),(0,p.jsx)(`span`,{className:`context-menu__item-label`,children:e.label})]},e.key))});return(0,f.createPortal)(l,n)};var nt=`data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1775031767174'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='30653'%20data-spm-anchor-id='a313x.search_index.0.i6.78953a81FCkAe0'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='64'%20height='64'%3e%3cpath%20d='M322.24%20479.210667l-42.453333-42.432%20198.826666-198.826667c53.397333-53.376%20139.306667-53.568%20191.914667-0.981333%2052.608%2052.608%2052.416%20138.517333-0.981333%20191.914666L455.722667%20642.709333l-42.432-42.453333%20213.824-213.802667a74.773333%2074.773333%200%200%200-0.341334-105.728%2074.773333%2074.773333%200%200%200-105.728-0.341333l-198.826666%20198.826667z'%20fill='%23ffffff'%20p-id='30654'%3e%3c/path%3e%3cpath%20d='M699.093333%20613.333333l42.453334%2042.432-169.429334%20169.408c-48.341333%2048.341333-129.28%2042.282667-181.248-9.664-51.968-51.968-58.026667-132.906667-9.664-181.248l234.346667-234.346666%2042.432%2042.410666L423.616%20676.693333c-22.250667%2022.250667-19.050667%2065.024%2011.008%2095.061334%2030.037333%2030.058667%2072.810667%2033.258667%2095.061333%2010.986666l169.429334-169.408zM187.989333%20571.029333c-38.933333-38.933333-38.805333-102.613333%200.853334-142.293333%2039.68-39.68%20103.381333-39.808%20142.293333-0.853333%2038.954667%2038.912%2038.826667%20102.613333-0.853333%20142.293333-39.68%2039.658667-103.381333%2039.786667-142.293334%200.853333z%20m43.733334-43.733333c15.744%2015.744%2040.874667%2015.68%2056.128%200.426667%2015.253333-15.232%2015.296-40.362667-0.426667-56.106667-15.765333-15.744-40.896-15.701333-56.149333-0.448-15.232%2015.232-15.296%2040.384%200.448%2056.106667z'%20fill='%23ffffff'%20p-id='30655'%3e%3c/path%3e%3cpath%20d='M846.144%20489.728l-31.466667%20198.784-56.96-101.461333-104.042666-38.506667z'%20fill='%23ffffff'%20p-id='30656'%3e%3c/path%3e%3c/svg%3e`,Y=`route-planning-temp-line`,rt=`route-planning-temp-line-layer`,X=`route-planning-temp-point-layer`;const it=(0,c.forwardRef)(({map:e,pointCount:t=2,showPointCountInput:n=!1,visualType:r=`marker`,onSelectFinished:i,showButton:a=!0},o)=>{let[s,u]=(0,c.useState)(`idle`),[d,f]=(0,c.useState)(0),[m,h]=(0,c.useState)(t),[g,_]=(0,c.useState)(!1),v=(0,c.useRef)(null),y=(0,c.useRef)(null),b=(0,c.useRef)([]),x=(0,c.useRef)([]),S=(0,c.useRef)(`idle`),C=(0,c.useRef)(null),w=(0,c.useRef)(``);(0,c.useEffect)(()=>{S.current=s},[s]),(0,c.useEffect)(()=>{h(t)},[t]),(0,c.useEffect)(()=>{if(!g)return;let e=e=>{y.current&&!y.current.contains(e.target)&&v.current&&!v.current.contains(e.target)&&_(!1)},t=setTimeout(()=>{document.addEventListener(`mousedown`,e)},0);return()=>{clearTimeout(t),document.removeEventListener(`mousedown`,e)}},[g]);let T=(0,c.useCallback)(()=>{for(let e of x.current)e.remove();x.current=[],e&&(e.getLayer(rt)&&e.removeLayer(rt),e.getLayer(X)&&e.removeLayer(X),e.getSource(Y)&&e.removeSource(Y))},[e]),E=(0,c.useCallback)(()=>{if(!e)return;let t=b.current,n={type:`FeatureCollection`,features:[{type:`Feature`,properties:{},geometry:{type:`LineString`,coordinates:t.length>=2?t:[]}},...t.map((e,t)=>({type:`Feature`,properties:{index:t},geometry:{type:`Point`,coordinates:e}}))]},r=e.getSource(Y);r?r.setData(n):(e.addSource(Y,{type:`geojson`,data:n}),e.addLayer({id:rt,type:`line`,source:Y,filter:[`==`,`$type`,`LineString`],paint:{"line-color":`#4A90D9`,"line-width":3,"line-dasharray":[2,2]}}),e.addLayer({id:X,type:`circle`,source:Y,filter:[`==`,`$type`,`Point`],paint:{"circle-radius":6,"circle-color":`#4A90D9`,"circle-stroke-width":2,"circle-stroke-color":`#fff`}}))},[e]),D=(0,c.useCallback)(t=>{if(!e||!C.current)return;let{visualType:n}=C.current;if(n===`marker`){let n=document.createElement(`div`);n.className=`route-planning-temp-marker`,n.textContent=String(b.current.length);let r=new l.default.Marker({element:n}).setLngLat(t).addTo(e);x.current.push(r)}else E()},[e,E]),O=(0,c.useCallback)(()=>{if(T(),b.current=[],C.current=null,f(0),u(`idle`),e)try{e.getCanvas().style.cursor=w.current}catch{}},[T,e]),k=(0,c.useCallback)(async()=>{let e=C.current,t=[...b.current];if(!e||t.length<2){O();return}u(`planning`);try{await e.onSelectFinished(t)}catch(e){console.error(`Route planning onSelectFinished failed:`,e)}finally{O()}},[O]),ee=(0,c.useCallback)(e=>{if(S.current!==`selecting`||!C.current)return;let t=[e.lngLat.lng,e.lngLat.lat];b.current.push(t);let n=b.current.length;f(n),D(t),n>=C.current.pointCount&&k()},[D,k]),A=(0,c.useCallback)(e=>{S.current===`selecting`&&(e.preventDefault(),O())},[O]);(0,c.useEffect)(()=>{if(e&&s===`selecting`)return e.on(`click`,ee),e.on(`contextmenu`,A),()=>{if(e)try{e.off(`click`,ee),e.off(`contextmenu`,A)}catch{}}},[e,s,ee,A]);let j=(0,c.useCallback)(n=>{if(!e)return;S.current!==`idle`&&O();let i=Math.max(2,n.pointCount??t),a=n.visualType??r;C.current={pointCount:i,visualType:a,onSelectFinished:n.onSelectFinished},b.current=[],f(0),h(i),_(!1),w.current=e.getCanvas().style.cursor,e.getCanvas().style.cursor=`crosshair`,u(`selecting`)},[e,t,r,O]);(0,c.useImperativeHandle)(o,()=>({startPlanning:j}),[j]);let M=()=>{s===`idle`?_(e=>!e):s===`selecting`&&O()},te=()=>{i&&j({pointCount:Math.max(2,m),visualType:r,onSelectFinished:i})},ne=e=>{let t=parseInt(e.target.value,10);!isNaN(t)&&t>=2?h(t):e.target.value===``&&h(2)},N=()=>{if(s===`planning`)return(0,p.jsx)(`span`,{children:`规划中...`});if(s===`selecting`){let e=C.current?.pointCount??m;return(0,p.jsxs)(`span`,{children:[d,`/`,e]})}return`路径规划`},P=s===`selecting`,re=s===`planning`;return!a&&s===`idle`?null:(0,p.jsxs)(`div`,{className:`mapbox-route-planning-control${a?``:` mapbox-route-planning-control--floating`}`,children:[(0,p.jsxs)(`button`,{ref:v,className:`mapbox-control-btn mapbox-route-planning-control__btn${P?` mapbox-route-planning-control__btn--active`:``}${re?` mapbox-route-planning-control__btn--planning`:``}${g?` mapbox-route-planning-control__btn--active`:``}`,onClick:M,disabled:re,title:s===`idle`?`路径规划`:s===`selecting`?`取消选点`:`规划中...`,children:[(0,p.jsx)(`img`,{src:nt,alt:`route`,className:`mapbox-route-planning-control__btn-icon`}),N()]}),g&&s===`idle`&&(0,p.jsxs)(`div`,{ref:y,className:`mapbox-route-planning-control__panel`,children:[(0,p.jsx)(`div`,{className:`mapbox-route-planning-control__panel-header`,children:(0,p.jsx)(`span`,{className:`mapbox-route-planning-control__panel-title`,children:`路径规划`})}),(0,p.jsxs)(`div`,{className:`mapbox-route-planning-control__panel-body`,children:[(0,p.jsxs)(`div`,{className:`mapbox-route-planning-control__panel-row`,children:[(0,p.jsx)(`span`,{className:`mapbox-route-planning-control__panel-label`,children:`选点数量`}),n?(0,p.jsx)(`input`,{type:`number`,className:`mapbox-route-planning-control__panel-input`,value:m,min:2,onChange:ne}):(0,p.jsx)(`span`,{className:`mapbox-route-planning-control__panel-value`,children:m})]}),(0,p.jsx)(`div`,{className:`mapbox-route-planning-control__panel-tip`,children:`左键点击地图选点,右键取消`}),(0,p.jsx)(`button`,{className:`mapbox-route-planning-control__panel-start`,onClick:te,disabled:!i,children:`开始规划`})]})]})]})});it.displayName=`RoutePlanningControl`;function at(e,t,n){return{content:e.content??n??null,trigger:e.trigger??t?.trigger??T.trigger,position:e.position??t?.position??T.position,offset:e.offset??t?.offset??T.offset,showCloseButton:e.showCloseButton??t?.showCloseButton??T.showCloseButton,animation:e.animation??t?.animation??T.animation,className:e.className??``,style:e.style??{},closeOnClickOutside:e.closeOnClickOutside??t?.closeOnClickOutside??T.closeOnClickOutside,closeOnEscape:e.closeOnEscape??t?.closeOnEscape??T.closeOnEscape,hoverDelay:e.hoverDelay??t?.hoverDelay??T.hoverDelay,maxWidth:e.maxWidth??t?.maxWidth??T.maxWidth,zIndex:e.zIndex??t?.zIndex??T.zIndex}}function ot(e,t,n,r,i){let a,o;if(e.type===`polygon`)o=e.center??st(e.coordinates);else if(e.type===`polyline`)o=e.center??ct(e.coordinates);else if(e.type===`rectangle`)if(e.center)o=e.center;else{let[[t,n],[r,i]]=e.bounds;o=[(t+r)/2,(n+i)/2]}else if(e.type===`attack-direction`){let t=e.coordinates;o=e.center??[(t[0][0]+t[1][0]+t[2][0])/3,(t[0][1]+t[1][1]+t[2][1])/3]}else o=e.center;if(!o)return{position:{x:0,y:0},actualPosition:t.position};let s=n.project(o);a={x:s.x,y:s.y};let c=lt(i,t);return ut(a,t.position,t.offset,c)}function st(e){if(!e||e.length===0)return[0,0];let t=[...e];(e[0][0]!==e[e.length-1][0]||e[0][1]!==e[e.length-1][1])&&t.push(e[0]);let n=(0,u.polygon)([t]);return(0,u.centroid)(n).geometry.coordinates}function ct(e){if(!e||e.length===0)return[0,0];let t=0,n=0;for(let r of e)t+=r[0],n+=r[1];return[t/e.length,n/e.length]}function lt(e,t){if(e){let t=e.getBoundingClientRect();return{width:t.width||320,height:t.height||200}}return{width:typeof t.maxWidth==`number`?t.maxWidth:320,height:200}}function ut(e,t,n,r){let i={width:window.innerWidth,height:window.innerHeight},a=(()=>{switch(t){case`top`:return[`top`,`bottom`,`right`,`left`,`center`];case`bottom`:return[`bottom`,`top`,`right`,`left`,`center`];case`left`:return[`left`,`right`,`top`,`bottom`,`center`];case`right`:return[`right`,`left`,`top`,`bottom`,`center`];case`center`:default:return[`center`,`top`,`bottom`,`left`,`right`]}})(),o={top:()=>({x:e.x-r.width/2+n[0],y:e.y-r.height-20+n[1]}),bottom:()=>({x:e.x-r.width/2+n[0],y:e.y+20+n[1]}),left:()=>({x:e.x-r.width-20+n[0],y:e.y-r.height/2+n[1]}),right:()=>({x:e.x+20+n[0],y:e.y-r.height/2+n[1]}),center:()=>({x:e.x-r.width/2+n[0],y:e.y-r.height/2+n[1]})},s=e=>e.x>=10&&e.y>=10&&e.x+r.width+10<=i.width&&e.y+r.height+10<=i.height;for(let e of a){let t=o[e]();if(s(t))return{position:t,actualPosition:e}}let c=o[t]();return{position:dt(c,r),actualPosition:t}}function dt(e,t){let n={width:window.innerWidth,height:window.innerHeight},r={...e};return r.x+t.width+10>n.width&&(r.x=n.width-t.width-10),r.x<10&&(r.x=10),r.y+t.height+10>n.height&&(r.y=n.height-t.height-10),r.y<10&&(r.y=10),r}const ft=(0,c.forwardRef)((e,t)=>{let{center:n=[116.4074,39.9042],zoom:r=12,pitch:i=0,bearing:a=0,style:o=`mapbox://styles/mapbox/dark-v11`,maxBounds:s,mode:u=`display`,editConfig:d={},pickerConfig:f={},onPick:m,interactive:h={},layers:g=[],rasterPaint:_,entities:v=[],selectedIds:y=[],entityConfig:b,nameConfig:C,selectNameConfig:w,areaConfig:T,circleConfig:E,lengthConfig:k,showCoordinates:M=!0,showScale:te=!0,showResetView:ne=!0,showRoadHighlight:N=!1,showMeasure:P=!1,showRasterPaint:re=!1,showRoutePlanning:ie,onRasterPaintChange:ae,popupDefaults:F,renderPopup:I,onMapLoad:oe,onEntityClick:ce,onPopupOpen:pe,onPopupClose:me,className:he=``,containerStyle:ve}=e,L=(0,c.useRef)(null),be=(0,c.useRef)(null),Se=(0,c.useRef)(null),R=(0,c.useRef)(null),z=(0,c.useRef)(new Map),B=(0,c.useRef)(new Map),Oe=(0,c.useRef)(new Set),[V,Ae]=(0,c.useState)(null),je=(0,c.useRef)(null),Me=(0,c.useRef)(null),Ne=(0,c.useRef)(null),[Fe,Ie]=(0,c.useState)(null),Le=(0,c.useRef)(null),Re=(0,c.useRef)(null),[ze,Be]=(0,c.useState)(null),[He,Ue]=(0,c.useState)(u),[We,Ge]=(0,c.useState)(null),Ke=(0,c.useRef)(null),[qe,H]=(0,c.useState)(null),[U,W]=(0,c.useState)(null),[Je,Ye]=(0,c.useState)(null),G=(0,c.useRef)(!1),K=(0,c.useRef)(null),Ze=(0,c.useRef)(null),q=(0,c.useRef)(null),Qe=(0,c.useRef)(null),J=(0,c.useRef)(null),nt=(0,c.useRef)([]),Y=(0,c.useRef)(null),rt=(0,c.useRef)(null),X=(0,c.useRef)(null),st=(0,c.useRef)([]),ct=(0,c.useRef)(null),lt=(0,c.useRef)(!1),[ut,dt]=(0,c.useState)([]),ft=(0,c.useRef)([]);ft.current=ut;let Z=(0,c.useRef)(null);(0,c.useEffect)(()=>{Ue(u)},[u]);let pt=(0,c.useCallback)(e=>{let t=z.current.get(e),n=B.current.get(e);if(t&&n){if(n.type===`radar`&&t instanceof se){let r={...n,isAnimating:!0};B.current.set(e,r),t.startAnimation()}else if(n.type===`circle`&&t instanceof xe){let r={...n,isAnimating:!0};B.current.set(e,r),t.startAnimation()}}},[]),mt=(0,c.useCallback)(e=>{let t=z.current.get(e),n=B.current.get(e);if(t&&n){if(n.type===`radar`&&t instanceof se){let r={...n,isAnimating:!1};B.current.set(e,r),t.stopAnimation()}else if(n.type===`circle`&&t instanceof xe){let r={...n,isAnimating:!1};B.current.set(e,r),t.stopAnimation()}}},[]),ht=(0,c.useCallback)(e=>{let t=B.current.get(e);t&&(t.type===`radar`||t.type===`circle`)&&(t.type,t.isAnimating?mt(e):pt(e))},[pt,mt]),gt=(0,c.useCallback)(e=>{if(e===void 0){let e=!1;for(let[,t]of z.current)if(t instanceof de){let n=t.getShowTrajectory();if(n===`all`||typeof n==`number`&&n>0){e=!0;break}}let t=e?0:`all`;for(let[,e]of z.current)e instanceof de&&e.setShowTrajectory(t)}else{let t=new Set(e.map(String));for(let[e,n]of z.current)n instanceof de&&n.setShowTrajectory(t.has(String(e))?`all`:0)}},[]),_t=(0,c.useCallback)((e,t,n)=>{let r=v.find(t=>String(t.id)===String(e));if(!r?.popup||!R.current)return;let i=r.popup.content??I?.(r);if(!i)return;let a=at(r.popup,F,i),{position:o,actualPosition:s}=ot(r,a,R.current,n);Ae({entityId:e,position:o,config:a,openedBy:t,actualPosition:s}),pe?.(e)},[v,F,I,pe]),vt=(0,c.useCallback)(e=>{V?.entityId===e&&(Ae(null),me?.(e))},[V,me]),yt=(0,c.useCallback)(()=>{Ae(e=>(e&&me?.(e.entityId),null))},[me]),bt=(0,c.useCallback)(e=>V?.entityId===e,[V]),xt=(0,c.useCallback)((e,t,n)=>{let r=R.current;r&&r.flyTo({center:e,zoom:t??r.getZoom(),...n})},[]),St=(0,c.useCallback)(e=>{if(e.length===0)return null;let t=1/0,n=-1/0,r=1/0,i=-1/0,a=!1;for(let o of e){let e=z.current.get(o);if(e){let[[o,s],[c,l]]=e.getBounds();t=Math.min(t,o),n=Math.max(n,c),r=Math.min(r,s),i=Math.max(i,l),a=!0}}return a?[(t+n)/2,(r+i)/2]:null},[]),Ct=(0,c.useCallback)((e,t,n)=>{let r=R.current;if(!r||e.length===0)return;let i=St(e);if(!i)return;let a=[];for(let t of e){let e=z.current.get(t);e&&a.push(e.getBounds())}let o=1/0,s=-1/0,c=1/0,l=-1/0;for(let[[e,t],[n,r]]of a)o=Math.min(o,e),s=Math.max(s,n),c=Math.min(c,t),l=Math.max(l,r);let u=o===s&&c===l;if(a.length===1||u){let e={center:i,zoom:t??r.getZoom()};n?.duration!==void 0&&(e.duration=n.duration),n?.pitch!==void 0&&(e.pitch=n.pitch),n?.bearing!==void 0&&(e.bearing=n.bearing),n?.essential!==void 0&&(e.essential=n.essential),r.flyTo(e);return}let d=[[o,c],[s,l]],f={padding:n?.padding??50,duration:n?.duration??1e3,bearing:n?.bearing??r.getBearing(),pitch:n?.pitch??r.getPitch()};t!==void 0&&(f.maxZoom=t),n?.essential!==void 0&&(f.essential=n.essential),r.fitBounds(d,f)},[St]),wt=(0,c.useRef)(null),Tt=(0,c.useRef)(`display`),[Et,Dt]=(0,c.useState)({}),Q=(0,c.useMemo)(()=>({...f,...Et}),[f,Et]),Ot=(0,c.useCallback)(e=>{let t=R.current;if(!t||!t.getContainer())return;let{showMarker:n=!0,markerColor:r=`#3388ff`,name:i,nameConfig:a}=Q;if(!n){Ke.current&&=(Ke.current.remove(),null);return}if(Ke.current){Ke.current.setLngLat(e);let t=Ke.current.getElement(),n=t.querySelector(`.marker-label`);if(i){let e=x(a,C);if(n)n.textContent=i,n.style.color=e.fillColor,n.style.opacity=String(e.fillOpacity),n.style.webkitTextStrokeColor=e.strokeColor,n.style.webkitTextStrokeWidth=`${e.strokeWidth}px`;else{let n=document.createElement(`div`);n.className=`marker-label`,n.textContent=i,n.style.color=e.fillColor,n.style.opacity=String(e.fillOpacity),n.style.webkitTextStrokeColor=e.strokeColor,n.style.webkitTextStrokeWidth=`${e.strokeWidth}px`,t.appendChild(n)}}else n&&n.remove()}else{let n=document.createElement(`div`);n.className=`mapbox-picker-marker`;let o=document.createElement(`div`);if(o.className=`marker-inner`,o.style.background=r,n.appendChild(o),i){let e=x(a,C),t=document.createElement(`div`);t.className=`marker-label`,t.textContent=i,t.style.color=e.fillColor,t.style.opacity=String(e.fillOpacity),t.style.webkitTextStrokeColor=e.strokeColor,t.style.webkitTextStrokeWidth=`${e.strokeWidth}px`,n.appendChild(t)}Ke.current=new l.default.Marker({element:n,anchor:`bottom`}).setLngLat(e).addTo(t)}},[Q,C]),kt=(0,c.useCallback)(()=>{Ke.current&&=(Ke.current.remove(),null)},[]),At=(0,c.useCallback)(()=>`marker-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,[]),jt=(0,c.useCallback)(e=>{let t=R.current;if(L.current)if(ct.current&&=(ct.current.remove(),null),e&&t){t.getCanvas().style.cursor=`none`;let n=document.createElement(`div`);n.className=`mapbox-custom-cursor`;let r=e.size||e.width||32;n.style.cssText=`
|
|
52
52
|
position: fixed;
|
|
53
53
|
pointer-events: none;
|
|
54
54
|
z-index: 9999;
|
package/dist/index.mjs
CHANGED
|
@@ -4807,7 +4807,38 @@ const RoadHighlightControl = forwardRef(({ map: e, highlightWidth: i = 3, defaul
|
|
|
4807
4807
|
}), D && createPortal(Te(), D)] });
|
|
4808
4808
|
});
|
|
4809
4809
|
RoadHighlightControl.displayName = "RoadHighlightControl";
|
|
4810
|
-
var measure_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773733446763'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='1802'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M110.34624%20352.01024a30.72%2030.72%200%201%200%2061.44%200v-38.46144h680.42752v38.5024a30.72%2030.72%200%200%200%2061.44%200V213.72928a30.72%2030.72%200%200%200-61.44%200v38.33856H171.78624v-38.33856a30.72%2030.72%200%200%200-61.44%200v138.28096z%20m34.816%20127.22176a34.816%2034.816%200%200%200-34.816%2034.816v312.60672c0%2019.2512%2015.5648%2034.816%2034.816%2034.816h733.5936c19.2512%200%2034.816-15.5648%2034.816-34.816V514.048a34.816%2034.816%200%200%200-34.816-34.816H145.2032z%20m26.624%20320.79872V540.672h680.3456v259.35872H171.8272z'%20fill='white'%20p-id='1804'%3e%3c/path%3e%3c/svg%3e", square_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e", rectangle_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e", circle_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e", polygon_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e", polyline_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e", delete_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e"
|
|
4810
|
+
var measure_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1773733446763'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='1802'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M110.34624%20352.01024a30.72%2030.72%200%201%200%2061.44%200v-38.46144h680.42752v38.5024a30.72%2030.72%200%200%200%2061.44%200V213.72928a30.72%2030.72%200%200%200-61.44%200v38.33856H171.78624v-38.33856a30.72%2030.72%200%200%200-61.44%200v138.28096z%20m34.816%20127.22176a34.816%2034.816%200%200%200-34.816%2034.816v312.60672c0%2019.2512%2015.5648%2034.816%2034.816%2034.816h733.5936c19.2512%200%2034.816-15.5648%2034.816-34.816V514.048a34.816%2034.816%200%200%200-34.816-34.816H145.2032z%20m26.624%20320.79872V540.672h680.3456v259.35872H171.8272z'%20fill='white'%20p-id='1804'%3e%3c/path%3e%3c/svg%3e", square_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='192'%20y='192'%20width='640'%20height='640'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e", rectangle_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3crect%20x='160'%20y='240'%20width='704'%20height='544'%20rx='32'%20ry='32'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e", circle_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3ccircle%20cx='512'%20cy='512'%20r='384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'/%3e%3c/svg%3e", polygon_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolygon%20points='512,128%20864,384%20736,800%20288,800%20160,384'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'/%3e%3c/svg%3e", polyline_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='128'%20height='128'%3e%3cpolyline%20points='160,768%20384,256%20640,576%20864,192'%20fill='none'%20stroke='%23ffffff'%20stroke-width='64'%20stroke-linejoin='round'%20stroke-linecap='round'/%3e%3c/svg%3e", delete_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1769394652565'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='6483'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='128'%20height='128'%3e%3cpath%20d='M841.385637%20288.639098a36.479886%2036.479886%200%200%201%2072.74644%207.679976l6.613312%20629.544699A109.866323%20109.866323%200%200%201%20810.665733%201023.9968H222.507571a109.652991%20109.652991%200%200%201-109.012992-98.133027l-3.626656-629.544699a36.479886%2036.479886%200%200%201%2072.74644-7.679976L186.241018%20917.330467a36.479886%2036.479886%200%200%200%2036.266553%2032.639898H810.665733A36.479886%2036.479886%200%200%200%20847.99895%20917.330467z%20m-219.732646%20113.706311a36.479886%2036.479886%200%200%201%2036.693218%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.479886-36.479886z%20m-219.305982%200a36.479886%2036.479886%200%200%201%2036.479886%2036.479886v255.9992a36.693219%2036.693219%200%201%201-73.173104%200v-255.9992a36.479886%2036.479886%200%200%201%2036.693218-36.479886z%20m-36.693218-255.9992h292.692418V91.519714a18.346609%2018.346609%200%200%200-18.346609-18.346609H384.0004a18.346609%2018.346609%200%200%200-18.346609%2018.346609z%20m-73.173105%200V73.173105A73.173105%2073.173105%200%200%201%20365.653791%200h292.692418a73.386437%2073.386437%200%200%201%2073.173105%2073.173105v73.173104h255.9992a36.693219%2036.693219%200%200%201%200%2073.173105H36.481486a36.693219%2036.693219%200%200%201%200-73.173105z'%20fill='%23EB6865'%20p-id='6484'%3e%3c/path%3e%3c/svg%3e";
|
|
4811
|
+
function computeEntityArea(e) {
|
|
4812
|
+
if (e.type === "circle") return formatArea(Math.PI * e.radius * e.radius);
|
|
4813
|
+
if (e.type === "square") return formatArea(e.length * e.length);
|
|
4814
|
+
if (e.type === "rectangle") {
|
|
4815
|
+
let [[t, n], [r, i]] = e.bounds, a = [Math.min(t, r), Math.max(n, i)], o = [Math.max(t, r), Math.max(n, i)], s = [Math.max(t, r), Math.min(n, i)], c = distance(a, o), l = distance(o, s);
|
|
4816
|
+
return formatArea(c * l);
|
|
4817
|
+
}
|
|
4818
|
+
if (e.type === "polygon") {
|
|
4819
|
+
let t = [...e.coordinates, e.coordinates[0]];
|
|
4820
|
+
return formatArea(polygonArea(t));
|
|
4821
|
+
}
|
|
4822
|
+
}
|
|
4823
|
+
function computeEntityLengthOrRadius(e) {
|
|
4824
|
+
if (e.type === "circle") return formatLength(e.radius);
|
|
4825
|
+
if (e.type === "square") return formatLength(e.length);
|
|
4826
|
+
if (e.type === "rectangle") {
|
|
4827
|
+
let [[t, n], [r, i]] = e.bounds, a = [Math.min(t, r), Math.max(n, i)], o = [Math.max(t, r), Math.max(n, i)], s = [Math.max(t, r), Math.min(n, i)], c = distance(a, o), l = distance(o, s);
|
|
4828
|
+
return formatLength(2 * (c + l));
|
|
4829
|
+
}
|
|
4830
|
+
if (e.type === "polygon") {
|
|
4831
|
+
let t = 0, n = e.coordinates;
|
|
4832
|
+
for (let e = 0; e < n.length; e++) t += distance(n[e], n[(e + 1) % n.length]);
|
|
4833
|
+
return formatLength(t);
|
|
4834
|
+
}
|
|
4835
|
+
if (e.type === "polyline") {
|
|
4836
|
+
let t = 0;
|
|
4837
|
+
for (let n = 0; n < e.coordinates.length - 1; n++) t += distance(e.coordinates[n], e.coordinates[n + 1]);
|
|
4838
|
+
return formatLength(t);
|
|
4839
|
+
}
|
|
4840
|
+
}
|
|
4841
|
+
var SHAPE_LABELS = {
|
|
4811
4842
|
square: "正方形",
|
|
4812
4843
|
rectangle: "矩形",
|
|
4813
4844
|
circle: "圆形",
|
|
@@ -4862,36 +4893,6 @@ function createSquareCoords(e, t) {
|
|
|
4862
4893
|
[n - s, r + o]
|
|
4863
4894
|
];
|
|
4864
4895
|
}
|
|
4865
|
-
function computeEntityArea(e) {
|
|
4866
|
-
if (e.type === "circle") return formatArea(Math.PI * e.radius * e.radius);
|
|
4867
|
-
if (e.type === "square") return formatArea(e.length * e.length);
|
|
4868
|
-
if (e.type === "rectangle") {
|
|
4869
|
-
let [[t, n], [r, i]] = e.bounds, a = [Math.min(t, r), Math.max(n, i)], o = [Math.max(t, r), Math.max(n, i)], s = [Math.max(t, r), Math.min(n, i)], c = distance(a, o), l = distance(o, s);
|
|
4870
|
-
return formatArea(c * l);
|
|
4871
|
-
}
|
|
4872
|
-
if (e.type === "polygon") {
|
|
4873
|
-
let t = [...e.coordinates, e.coordinates[0]];
|
|
4874
|
-
return formatArea(polygonArea(t));
|
|
4875
|
-
}
|
|
4876
|
-
}
|
|
4877
|
-
function computeEntityLengthOrRadius(e) {
|
|
4878
|
-
if (e.type === "circle") return formatLength(e.radius);
|
|
4879
|
-
if (e.type === "square") return formatLength(e.length);
|
|
4880
|
-
if (e.type === "rectangle") {
|
|
4881
|
-
let [[t, n], [r, i]] = e.bounds, a = [Math.min(t, r), Math.max(n, i)], o = [Math.max(t, r), Math.max(n, i)], s = [Math.max(t, r), Math.min(n, i)], c = distance(a, o), l = distance(o, s);
|
|
4882
|
-
return formatLength(2 * (c + l));
|
|
4883
|
-
}
|
|
4884
|
-
if (e.type === "polygon") {
|
|
4885
|
-
let t = 0, n = e.coordinates;
|
|
4886
|
-
for (let e = 0; e < n.length; e++) t += distance(n[e], n[(e + 1) % n.length]);
|
|
4887
|
-
return formatLength(t);
|
|
4888
|
-
}
|
|
4889
|
-
if (e.type === "polyline") {
|
|
4890
|
-
let t = 0;
|
|
4891
|
-
for (let n = 0; n < e.coordinates.length - 1; n++) t += distance(e.coordinates[n], e.coordinates[n + 1]);
|
|
4892
|
-
return formatLength(t);
|
|
4893
|
-
}
|
|
4894
|
-
}
|
|
4895
4896
|
var PREVIEW_PREFIX = "measure-";
|
|
4896
4897
|
function addPreviewSource(e, t) {
|
|
4897
4898
|
e.getSource(t) || e.addSource(t, {
|