gis-leaflet-helper 3.3.1 → 3.3.3

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.
@@ -1,7 +1,7 @@
1
1
  (function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode(".leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:\"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:\"\"}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.marker-icon{background-color:#fff;border:1px solid #3388ff;border-radius:50%;margin:-8px 0 0 -8px!important;width:14px!important;height:14px!important;outline:0;transition:opacity ease .3s}.marker-icon-middle{opacity:.7;margin:-6px 0 0 -6px!important;width:10px!important;height:10px!important}.leaflet-pm-draggable{cursor:move!important}.cursor-marker{cursor:crosshair;pointer-events:none;opacity:0}.cursor-marker.visible{opacity:1!important}.geoman-draw-cursor,.geoman-draw-cursor .leaflet-interactive{cursor:crosshair}.rect-style-marker,.rect-start-marker{opacity:0}.rect-style-marker.visible,.rect-start-marker.visible{opacity:1!important}.vertexmarker-disabled{opacity:.7}.pm-text-marker{width:0;height:0}.pm-textarea{box-sizing:content-box;background-color:#fff;color:#000;resize:none;border:none;outline:0;cursor:pointer;border-radius:3px;padding-left:7px;padding-bottom:0;padding-top:4px}.leaflet-pm-draggable .pm-textarea{cursor:move}.pm-textarea:focus,.pm-textarea:focus-within,.pm-textarea:focus-visible,.pm-textarea:active{border:2px solid #000;outline:0}.pm-textarea.pm-disabled{border:none;-webkit-user-select:none;user-select:none}.pm-textarea.pm-hasfocus{cursor:auto}.leaflet-pm-toolbar .leaflet-buttons-control-button{padding:5px;box-sizing:border-box;position:relative;z-index:3}.leaflet-pm-toolbar .leaflet-pm-actions-container a.leaflet-pm-action:first-child:not(.pos-right),.leaflet-pm-toolbar .leaflet-pm-actions-container a.leaflet-pm-action:last-child.pos-right{border-radius:0}.leaflet-pm-toolbar .button-container a.leaflet-buttons-control-button{border-radius:0}.leaflet-pm-toolbar .button-container:last-child a.leaflet-buttons-control-button{border-radius:0 0 2px 2px}.leaflet-pm-toolbar .button-container:first-child a.leaflet-buttons-control-button{border-radius:2px 2px 0 0}.leaflet-pm-toolbar .button-container:last-child a.leaflet-buttons-control-button{border-bottom:none}.leaflet-pm-toolbar .control-fa-icon{font-size:19px;line-height:24px}.leaflet-pm-toolbar .control-icon{width:100%;height:100%;box-sizing:border-box;background-size:contain;background-repeat:no-repeat;background-position:center center}.leaflet-pm-toolbar .leaflet-pm-icon-marker{background-image:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"UTF-8\"?>%0A<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">%0A <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->%0A <title>Atoms/Icons/Tools/Marker</title>%0A <desc>Created with Sketch.</desc>%0A <defs>%0A <path d=\"M15.5,24.8782959 C15.2909201,24.8772219 15.1744857,24.8467817 14.6590866,24.2354163 C10.2196955,19.4118054 8,15.5014392 8,12.5043177 C8,8.35979746 11.3578644,5 15.5,5 C19.6421356,5 23,8.35979746 23,12.5043177 C23,17 18.2878217,21.9268378 16.3336601,24.2440186 C15.8224622,24.8501802 15.7090799,24.8793699 15.5,24.8782959 Z M15.5,15.5326948 C17.275201,15.5326948 18.7142857,14.1180004 18.7142857,12.3728864 C18.7142857,10.6277723 17.275201,9.21307792 15.5,9.21307792 C13.724799,9.21307792 12.2857143,10.6277723 12.2857143,12.3728864 C12.2857143,14.1180004 13.724799,15.5326948 15.5,15.5326948 Z\" id=\"path-1\"></path>%0A </defs>%0A <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">%0A <g id=\"Atoms/Icons/Tools/Marker\" transform=\"translate(-3.000000, -3.000000)\">%0A <mask id=\"mask-2\" fill=\"white\">%0A <use xlink:href=\"%23path-1\"></use>%0A </mask>%0A <use id=\"Mask\" fill=\"%235B5B5B\" fill-rule=\"nonzero\" xlink:href=\"%23path-1\"></use>%0A </g>%0A </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-polygon{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">%0A <defs>%0A <path id=\"polygon-a\" d=\"M19.4206892,9.16509725 C19.1523681,8.66992914 19,8.10275831 19,7.5 C19,5.56700338 20.5670034,4 22.5,4 C24.4329966,4 26,5.56700338 26,7.5 C26,9.26323595 24.6961471,10.7219407 23,10.9645556 L23,19.0354444 C24.6961471,19.2780593 26,20.736764 26,22.5 C26,24.4329966 24.4329966,26 22.5,26 C20.736764,26 19.2780593,24.6961471 19.0354444,23 L10.9645556,23 C10.7219407,24.6961471 9.26323595,26 7.5,26 C5.56700338,26 4,24.4329966 4,22.5 C4,20.5670034 5.56700338,19 7.5,19 C8.10275831,19 8.66992914,19.1523681 9.16509725,19.4206892 L19.4206892,9.16509725 Z M20.8349073,10.5793063 L10.5793108,20.8349027 C10.6086731,20.8890888 10.6366469,20.9441372 10.6631844,21 L19.3368156,21 C19.6825775,20.272154 20.272154,19.6825775 21,19.3368156 L21,10.6631844 C20.9441372,10.6366469 20.8890888,10.6086731 20.8349027,10.5793108 Z M22.5,9 C23.3284271,9 24,8.32842712 24,7.5 C24,6.67157288 23.3284271,6 22.5,6 C21.6715729,6 21,6.67157288 21,7.5 C21,8.32842712 21.6715729,9 22.5,9 Z M22.5,24 C23.3284271,24 24,23.3284271 24,22.5 C24,21.6715729 23.3284271,21 22.5,21 C21.6715729,21 21,21.6715729 21,22.5 C21,23.3284271 21.6715729,24 22.5,24 Z M7.5,24 C8.32842712,24 9,23.3284271 9,22.5 C9,21.6715729 8.32842712,21 7.5,21 C6.67157288,21 6,21.6715729 6,22.5 C6,23.3284271 6.67157288,24 7.5,24 Z\"/>%0A </defs>%0A <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(-3 -3)\">%0A <mask id=\"polygon-b\" fill=\"%23fff\">%0A <use xlink:href=\"%23polygon-a\"/>%0A </mask>%0A <use fill=\"%235B5B5B\" fill-rule=\"nonzero\" xlink:href=\"%23polygon-a\"/>%0A <g fill=\"%235B5B5B\" mask=\"url(%23polygon-b)\">%0A <rect width=\"30\" height=\"30\"/>%0A </g>%0A </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-polyline{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">%0A <defs>%0A <path id=\"line-a\" d=\"M9.16509725,19.4206892 L18.4206892,10.1650973 C18.1523681,9.66992914 18,9.10275831 18,8.5 C18,6.56700338 19.5670034,5 21.5,5 C23.4329966,5 25,6.56700338 25,8.5 C25,10.4329966 23.4329966,12 21.5,12 C20.8972417,12 20.3300709,11.8476319 19.8349027,11.5793108 L10.5793108,20.8349027 C10.8476319,21.3300709 11,21.8972417 11,22.5 C11,24.4329966 9.43299662,26 7.5,26 C5.56700338,26 4,24.4329966 4,22.5 C4,20.5670034 5.56700338,19 7.5,19 C8.10275831,19 8.66992914,19.1523681 9.16509725,19.4206892 Z M21.5,10 C22.3284271,10 23,9.32842712 23,8.5 C23,7.67157288 22.3284271,7 21.5,7 C20.6715729,7 20,7.67157288 20,8.5 C20,9.32842712 20.6715729,10 21.5,10 Z M7.5,24 C8.32842712,24 9,23.3284271 9,22.5 C9,21.6715729 8.32842712,21 7.5,21 C6.67157288,21 6,21.6715729 6,22.5 C6,23.3284271 6.67157288,24 7.5,24 Z\"/>%0A </defs>%0A <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(-3 -3)\">%0A <mask id=\"line-b\" fill=\"%23fff\">%0A <use xlink:href=\"%23line-a\"/>%0A </mask>%0A <use fill=\"%235B5B5B\" fill-rule=\"nonzero\" xlink:href=\"%23line-a\"/>%0A <g fill=\"%235B5B5B\" mask=\"url(%23line-b)\">%0A <rect width=\"30\" height=\"30\"/>%0A </g>%0A </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-circle{background-image:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"UTF-8\"?>%0A<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">%0A <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->%0A <title>Atoms/Icons/Tools/Circle</title>%0A <desc>Created with Sketch.</desc>%0A <defs>%0A <path d=\"M18.2897751,6.78602275 C18.8924131,6.29464981 19.661797,6 20.5,6 C22.4329966,6 24,7.56700338 24,9.5 C24,10.338203 23.7053502,11.1075869 23.2139772,11.7102249 C23.719599,12.8712053 24,14.1528571 24,15.5 C24,20.7467051 19.7467051,25 14.5,25 C9.25329488,25 5,20.7467051 5,15.5 C5,10.2532949 9.25329488,6 14.5,6 C15.8471429,6 17.1287947,6.28040098 18.2897751,6.78602275 Z M17.1504228,8.4817586 C16.3263581,8.17039236 15.4330777,8 14.5,8 C10.3578644,8 7,11.3578644 7,15.5 C7,19.6421356 10.3578644,23 14.5,23 C18.6421356,23 22,19.6421356 22,15.5 C22,14.5669223 21.8296076,13.6736419 21.5182414,12.8495772 C21.1960383,12.9473968 20.8541622,13 20.5,13 C18.5670034,13 17,11.4329966 17,9.5 C17,9.14583778 17.0526032,8.80396169 17.1504228,8.4817586 Z M14.5,17 C13.6715729,17 13,16.3284271 13,15.5 C13,14.6715729 13.6715729,14 14.5,14 C15.3284271,14 16,14.6715729 16,15.5 C16,16.3284271 15.3284271,17 14.5,17 Z M20.5,11 C21.3284271,11 22,10.3284271 22,9.5 C22,8.67157288 21.3284271,8 20.5,8 C19.6715729,8 19,8.67157288 19,9.5 C19,10.3284271 19.6715729,11 20.5,11 Z\" id=\"path-1\"></path>%0A </defs>%0A <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">%0A <g id=\"Atoms/Icons/Tools/Circle\" transform=\"translate(-3.000000, -3.000000)\">%0A <mask id=\"mask-2\" fill=\"white\">%0A <use xlink:href=\"%23path-1\"></use>%0A </mask>%0A <use id=\"Mask\" fill=\"%235B5B5B\" fill-rule=\"nonzero\" xlink:href=\"%23path-1\"></use>%0A <g id=\"Atoms/Color/Grey\" mask=\"url(%23mask-2)\" fill=\"%235B5B5B\">%0A <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"30\" height=\"30\"></rect>%0A </g>%0A </g>%0A </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-circle-marker{background-image:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"UTF-8\"?>%0A%0A<svg viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"%235B5B5B\" stroke-width=\"8\"%0A fill=\"none\">%0A<circle cx=\"50\" cy=\"50\" r=\"35\"/>%0A <circle cx=\"50\" cy=\"50\" r=\"3\" fill=\"%235B5B5B\"/>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-rectangle{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">%0A <defs>%0A <path id=\"rectangle-a\" d=\"M23,10.9645556 L23,19.0354444 C24.6961471,19.2780593 26,20.736764 26,22.5 C26,24.4329966 24.4329966,26 22.5,26 C20.736764,26 19.2780593,24.6961471 19.0354444,23 L10.9645556,23 C10.7219407,24.6961471 9.26323595,26 7.5,26 C5.56700338,26 4,24.4329966 4,22.5 C4,20.736764 5.30385293,19.2780593 7,19.0354444 L7,10.9645556 C5.30385293,10.7219407 4,9.26323595 4,7.5 C4,5.56700338 5.56700338,4 7.5,4 C9.26323595,4 10.7219407,5.30385293 10.9645556,7 L19.0354444,7 C19.2780593,5.30385293 20.736764,4 22.5,4 C24.4329966,4 26,5.56700338 26,7.5 C26,9.26323595 24.6961471,10.7219407 23,10.9645556 Z M21,10.6631844 C20.272154,10.3174225 19.6825775,9.72784598 19.3368156,9 L10.6631844,9 C10.3174225,9.72784598 9.72784598,10.3174225 9,10.6631844 L9,19.3368156 C9.72784598,19.6825775 10.3174225,20.272154 10.6631844,21 L19.3368156,21 C19.6825775,20.272154 20.272154,19.6825775 21,19.3368156 L21,10.6631844 Z M7.5,9 C8.32842712,9 9,8.32842712 9,7.5 C9,6.67157288 8.32842712,6 7.5,6 C6.67157288,6 6,6.67157288 6,7.5 C6,8.32842712 6.67157288,9 7.5,9 Z M22.5,9 C23.3284271,9 24,8.32842712 24,7.5 C24,6.67157288 23.3284271,6 22.5,6 C21.6715729,6 21,6.67157288 21,7.5 C21,8.32842712 21.6715729,9 22.5,9 Z M22.5,24 C23.3284271,24 24,23.3284271 24,22.5 C24,21.6715729 23.3284271,21 22.5,21 C21.6715729,21 21,21.6715729 21,22.5 C21,23.3284271 21.6715729,24 22.5,24 Z M7.5,24 C8.32842712,24 9,23.3284271 9,22.5 C9,21.6715729 8.32842712,21 7.5,21 C6.67157288,21 6,21.6715729 6,22.5 C6,23.3284271 6.67157288,24 7.5,24 Z\"/>%0A </defs>%0A <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(-3 -3)\">%0A <mask id=\"rectangle-b\" fill=\"%23fff\">%0A <use xlink:href=\"%23rectangle-a\"/>%0A </mask>%0A <use fill=\"%235B5B5B\" fill-rule=\"nonzero\" xlink:href=\"%23rectangle-a\"/>%0A <g fill=\"%235B5B5B\" mask=\"url(%23rectangle-b)\">%0A <rect width=\"30\" height=\"30\"/>%0A </g>%0A </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-delete{background-image:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"UTF-8\"?>%0A<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">%0A <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->%0A <title>Atoms/Icons/Tools/Eraser</title>%0A <desc>Created with Sketch.</desc>%0A <defs>%0A <path d=\"M17.7874219,18.4812552 L11.6480079,13.3498184 L6.40466009,19.3816001 L10.5539156,22.9884929 L13.86934,22.9884929 L17.7874219,18.4812552 Z M16.5074252,22.9884929 L26.0000002,22.9884929 L26.0000002,24.9884929 L10.0000002,24.9884929 L9.80708313,24.9884929 L5.09254204,20.8910192 C4.25891285,20.1663564 4.17057814,18.9031112 4.89524093,18.069482 L16.0482444,5.23941916 C16.7729072,4.40578998 18.0361525,4.31745526 18.8697816,5.04211806 L24.9074583,10.2905903 C25.7410875,11.0152531 25.8294222,12.2784983 25.1047594,13.1121275 L16.5074252,22.9884929 Z\" id=\"path-1\"></path>%0A </defs>%0A <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">%0A <g id=\"Atoms/Icons/Tools/Eraser\" transform=\"translate(-3.000000, -3.000000)\">%0A <mask id=\"mask-2\" fill=\"white\">%0A <use xlink:href=\"%23path-1\"></use>%0A </mask>%0A <use id=\"Combined-Shape\" fill=\"%235B5B5B\" fill-rule=\"nonzero\" xlink:href=\"%23path-1\"></use>%0A </g>%0A </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-edit{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">%0A <defs>%0A <path id=\"edit_anchor-a\" d=\"M13.5,11 C11.5670034,11 10,9.43299662 10,7.5 C10,5.56700338 11.5670034,4 13.5,4 C15.4329966,4 17,5.56700338 17,7.5 C17,9.43299662 15.4329966,11 13.5,11 Z M13.5,9 C14.3284271,9 15,8.32842712 15,7.5 C15,6.67157288 14.3284271,6 13.5,6 C12.6715729,6 12,6.67157288 12,7.5 C12,8.32842712 12.6715729,9 13.5,9 Z M12.0002889,7.52973893 C12.0125983,8.16273672 12.4170197,8.6996643 12.9807111,8.90767966 L3,15 L3,13 L12.0002889,7.52973893 Z M14.2172722,6.18228472 L19.453125,3 L22.6589355,3 L14.989102,7.68173885 C14.9962971,7.62216459 15,7.56151472 15,7.5 C15,6.93138381 14.6836098,6.4366645 14.2172722,6.18228472 Z M23.4434042,19.2851736 L20.1282799,19.2851736 L21.8729983,23.5349525 C21.9945296,23.8295773 21.8556546,24.1599209 21.5778734,24.2849208 L20.0414675,24.9545142 C19.7550613,25.0795141 19.4338738,24.9366704 19.3123426,24.6509518 L17.6544367,20.6154541 L14.9461873,23.4010151 C14.5852811,23.7721711 14,23.4860463 14,22.9992653 L14,9.57183533 C14,9.05933561 14.6225311,8.809492 14.946156,9.17008555 L23.8340292,18.3120179 C24.1925291,18.6613615 23.9279979,19.2851736 23.4434042,19.2851736 Z\"/>%0A </defs>%0A <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(-3 -3)\">%0A <mask id=\"edit_anchor-b\" fill=\"%23fff\">%0A <use xlink:href=\"%23edit_anchor-a\"/>%0A </mask>%0A <use fill=\"%235B5B5B\" fill-rule=\"nonzero\" xlink:href=\"%23edit_anchor-a\"/>%0A <g fill=\"%235B5B5B\" mask=\"url(%23edit_anchor-b)\">%0A <rect width=\"30\" height=\"30\"/>%0A </g>%0A </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-drag{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">%0A <defs>%0A <path id=\"move-a\" d=\"M21,14 L21,10 L27,15 L21,20 L21,16 L16,16 L16,21 L20,21 L15,27 L10,21 L14,21 L14,16 L9,16 L9,20 L3,15 L9,10 L9,14 L14,14 L14,9 L10,9 L15,3 L20,9 L16,9 L16,14 L21,14 Z\"/>%0A </defs>%0A <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(-3 -3)\">%0A <mask id=\"move-b\" fill=\"%23fff\">%0A <use xlink:href=\"%23move-a\"/>%0A </mask>%0A <use fill=\"%23D8D8D8\" xlink:href=\"%23move-a\"/>%0A <g fill=\"%235B5B5B\" mask=\"url(%23move-b)\">%0A <rect width=\"30\" height=\"30\"/>%0A </g>%0A </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-cut{background-image:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"UTF-8\"?>%0A<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">%0A <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->%0A <title>Atoms/Icons/Tools/Scissors</title>%0A <desc>Created with Sketch.</desc>%0A <defs>%0A <path d=\"M12.9691574,13.4939435 L21.0317032,5.54167013 L23.4649499,5.67722957 L17.0470713,14.5106816 L27.5660336,17.1333535 L25.7891944,18.8012588 L14.5854951,17.8987506 L13.6487955,19.188007 C13.794639,19.2650958 13.9367985,19.3534417 14.0741377,19.4532245 C15.6379648,20.5894114 15.9846357,22.7782052 14.8484488,24.3420324 C13.7122619,25.9058595 11.5234681,26.2525304 9.95964096,25.1163435 C8.39581384,23.9801565 8.04914296,21.7913627 9.18532986,20.2275356 C9.74587276,19.4560145 10.5626188,18.9807475 11.4341218,18.8336407 L12.6805656,17.1180579 L12.5239724,16.3747216 L11.9506932,15.3012391 L9.89310646,14.7882251 C9.13093796,15.2357261 8.19977854,15.3966447 7.27445355,15.1659352 C5.39887519,14.698301 4.25751094,12.7987519 4.72514515,10.9231736 C5.19277935,9.04759519 7.09232846,7.90623094 8.96790682,8.37386515 C10.8434852,8.84149935 11.9848494,10.7410485 11.5172152,12.6166268 C11.4761464,12.7813449 11.4240335,12.9404001 11.3618627,13.0931999 L12.9691574,13.4939435 Z M7.75829735,13.2253438 C8.56211664,13.4257584 9.37620912,12.9366023 9.57662378,12.132783 C9.77703844,11.3289637 9.28788233,10.5148713 8.48406303,10.3144566 C7.68024373,10.1140419 6.86615126,10.603198 6.6657366,11.4070173 C6.46532194,12.2108366 6.95447805,13.0249291 7.75829735,13.2253438 Z M10.8033639,21.4031061 C10.3164266,22.0733177 10.4649998,23.0113722 11.1352115,23.4983095 C11.8054231,23.9852467 12.7434776,23.8366735 13.2304148,23.1664619 C13.7173521,22.4962502 13.5687788,21.5581957 12.8985672,21.0712585 C12.2283556,20.5843212 11.2903011,20.7328945 10.8033639,21.4031061 Z\" id=\"path-1\"></path>%0A </defs>%0A <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">%0A <g id=\"Atoms/Icons/Tools/Scissors\" transform=\"translate(-3.000000, -3.000000)\">%0A <mask id=\"mask-2\" fill=\"white\">%0A <use xlink:href=\"%23path-1\"></use>%0A </mask>%0A <use id=\"Mask\" fill=\"%235B5B5B\" fill-rule=\"nonzero\" transform=\"translate(16.093194, 15.663351) rotate(-32.000000) translate(-16.093194, -15.663351) \" xlink:href=\"%23path-1\"></use>%0A </g>%0A </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-snapping{background-image:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"UTF-8\"?>%0A<svg width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">%0A <!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->%0A <title>Atoms/Icons/Tools/Magnet</title>%0A <desc>Created with Sketch.</desc>%0A <defs>%0A <path d=\"M21.9994759,10.9428183 L21.9999985,16.3710417 C22,16.6872007 22,17.0058278 22,17.3269411 C22,21.5646545 18.6421356,25 14.5,25 C10.3578644,25 7,21.5646545 7,17.3269411 L7.00087508,10.9907507 L11.0022808,10.9984125 C11.0017033,11.6980114 11.001247,12.4168248 11.0008992,13.1554887 L11,17.3269411 C11,19.3756809 12.5876841,21 14.5,21 C16.4123159,21 18,19.3756809 18,17.3269411 C18,15.0702032 17.9995696,12.9619668 17.998539,10.9910032 L21.9994759,10.9428183 Z M10,7 C10.5522847,7 11,7.44771525 11,8 L11,10 L7,10 L7,8 C7,7.44771525 7.44771525,7 8,7 L10,7 Z M21,7 C21.5522847,7 22,7.44771525 22,8 L22,10 L18,10 L18,8 C18,7.44771525 18.4477153,7 19,7 L21,7 Z\" id=\"path-1\"></path>%0A </defs>%0A <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">%0A <g id=\"Atoms/Icons/Tools/Magnet\" transform=\"translate(-3.000000, -3.000000)\">%0A <mask id=\"mask-2\" fill=\"white\">%0A <use xlink:href=\"%23path-1\"></use>%0A </mask>%0A <use id=\"Mask\" fill=\"%235B5B5B\" fill-rule=\"nonzero\" transform=\"translate(14.500000, 16.000000) rotate(45.000000) translate(-14.500000, -16.000000) \" xlink:href=\"%23path-1\"></use>%0A </g>%0A </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-rotate{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">%0A <defs>%0A <path id=\"rotate\" d=\"M21.2,5.8c-0.1-0.2-0.2-0.3-0.3-0.5l-0.1-0.2c-0.1-0.2-0.2-0.3-0.3-0.5l-0.1-0.2c-0.1-0.2-0.2-0.3-0.4-0.5l-0.2-0.3l2.8-3.1L18,0.6l-4.6,0.1l0.5,4.5l0.5,4.5l3.2-3.6v0.1l0.1,0.2c0.1,0.1,0.1,0.2,0.2,0.2l0.1,0.2C18,7,18,7.1,18.1,7.2c0.3,0.7,0.6,1.4,0.7,2.1c0.2,1.4,0,2.9-0.6,4.2L18,13.9L17.9,14l-0.3,0.5l-0.1,0.2c-0.2,0.2-0.4,0.5-0.6,0.7c-0.5,0.5-1.1,1-1.7,1.3c-0.6,0.4-1.3,0.6-2.1,0.8c-0.7,0.1-1.5,0.2-2.2,0.1c-0.8-0.1-1.5-0.3-2.2-0.5c-0.7-0.3-1.3-0.7-1.9-1.2l-0.4-0.4l-0.2-0.3L6,15c-0.1-0.1-0.2-0.2-0.2-0.3l-0.3-0.4l-0.1-0.1l-0.2-0.4c0-0.1-0.1-0.1-0.1-0.2l-0.3-0.5l-0.1-0.2c-0.1-0.3-0.2-0.6-0.3-0.9c-0.2-0.8-0.3-1.6-0.3-2.4c0-0.2,0-0.3,0-0.5V8.9c0-0.2,0-0.3,0.1-0.4l0.1-0.6l0.2-0.6c0.3-0.8,0.7-1.5,1.2-2.2c0.5-0.7,1.1-1.3,1.8-1.8c0.2-0.1,0.3-0.4,0.1-0.6C7.5,2.6,7.4,2.5,7.3,2.5H7.1L7,2.6C6.1,3,5.4,3.6,4.7,4.2C4,4.9,3.5,5.7,3,6.6c-0.9,1.8-1.2,3.8-0.8,5.8c0.1,0.5,0.2,0.9,0.3,1.4l0.3,0.8C2.9,14.7,3,14.8,3,15l0.2,0.4c0,0.1,0.1,0.2,0.1,0.2l0.3,0.5c0.1,0.2,0.2,0.3,0.3,0.5l0.1,0.2c0.1,0.1,0.2,0.3,0.3,0.4L5,17.8c0.7,0.7,1.6,1.3,2.5,1.8c0.9,0.5,1.9,0.8,3,0.9c0.5,0.1,1,0.1,1.5,0.1c0.6,0,1.1,0,1.6-0.1c1-0.2,2.1-0.5,3-1l0.2-0.1c0.2-0.1,0.3-0.2,0.5-0.3l0.7-0.4c0.2-0.1,0.3-0.2,0.4-0.3l0.2-0.2c0.2-0.1,0.4-0.3,0.5-0.5l0.1-0.1c0.3-0.3,0.7-0.7,0.9-1l0.6-0.9l0.4-0.6c1-1.9,1.4-4.1,1.1-6.2C22,7.8,21.7,6.7,21.2,5.8z\"/>%0A </defs>%0A <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 2)\">%0A <mask id=\"rotate-b\" fill=\"%23fff\">%0A <use xlink:href=\"%23rotate\"/>%0A </mask>%0A <use fill=\"%235B5B5B\" fill-rule=\"nonzero\" xlink:href=\"%23rotate\"/>%0A <g fill=\"%235B5B5B\" mask=\"url(%23rotate-b)\">%0A <rect width=\"30\" height=\"30\"/>%0A </g>%0A </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-text{background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><defs><style>.cls-1{fill:none;stroke:%235b5b5b;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.5px;}<\\/style></defs><title>Text</title><g id=\"Ebene_2\" data-name=\"Ebene 2\"><polyline class=\"cls-1\" points=\"19.64 7.27 19.64 4 12 4 12 20 15.91 20 8.09 20 12 20 12 4 4.36 4 4.36 7.27\"/></g></svg>')}.leaflet-buttons-control-button:hover,.leaflet-buttons-control-button:focus{cursor:pointer;background-color:#f4f4f4}.active>.leaflet-buttons-control-button{box-shadow:inset 0 -1px 5px 2px #514d4d4f}.leaflet-buttons-control-text-hide{display:none}.button-container{position:relative}.button-container .leaflet-pm-actions-container{z-index:2;position:absolute;top:0;left:100%;display:none;white-space:nowrap;direction:ltr}.leaflet-right .leaflet-pm-toolbar .button-container .leaflet-pm-actions-container{right:100%;left:auto}.button-container.active .leaflet-pm-actions-container{display:block}.button-container .leaflet-pm-actions-container:not(.pos-right) a.leaflet-pm-action:last-child{border-radius:0 3px 3px 0;border-right:0}.button-container .leaflet-pm-actions-container.pos-right a.leaflet-pm-action:first-child{border-radius:3px 0 0 3px}.button-container .leaflet-pm-actions-container.pos-right a.leaflet-pm-action:last-child{border-right:0}.button-container .leaflet-pm-actions-container .leaflet-pm-action{padding:0 10px;background-color:#666;color:#fff;display:inline-block;width:auto;border-right:1px solid #eee;-webkit-user-select:none;user-select:none;border-bottom:none;height:29px;line-height:29px;vertical-align:middle}.leaflet-pm-toolbar .button-container:first-child.pos-right.active a.leaflet-buttons-control-button{border-top-left-radius:0}.leaflet-pm-toolbar .button-container:first-child.active:not(.pos-right) a.leaflet-buttons-control-button{border-top-right-radius:0}.button-container .leaflet-pm-actions-container .leaflet-pm-action:hover,.button-container .leaflet-pm-actions-container .leaflet-pm-action:focus{cursor:pointer;background-color:#777}.button-container .leaflet-pm-actions-container .leaflet-pm-action.active-action{background-color:#8e8e8e}.leaflet-pm-toolbar.activeChild{z-index:801}.leaflet-buttons-control-button.pm-disabled{background-color:#f4f4f4}.leaflet-buttons-control-button.pm-disabled>.control-icon{filter:opacity(.6)}.button-container .leaflet-pm-actions-container .pm-action-button-mode.control-icon{filter:brightness(0) invert(1);width:18px}body{height:100%;margin:0;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Microsoft YaHei,Arial,sans-serif}label{font-weight:700}html{height:100%;box-sizing:border-box}#app{height:100%}*,*:before,*:after{box-sizing:inherit}a:focus,a:active{outline:none}a,a:focus,a:hover{cursor:pointer;text-decoration:none}div:focus{outline:none}.clearfix:after{visibility:hidden;display:block;font-size:0;content:\" \";clear:both;height:0}.leaflet-left .leaflet-control{margin-left:5px}.leaflet-right .leaflet-control{margin-right:5px}.leaflet-top .leaflet-control{margin-top:5px}.leaflet-bottom .leaflet-control{margin-bottom:5px}.leaflet-div-icon{border:none!important;background:transparent!important;text-align:center}.leaflet-measure-path-measurement{position:absolute;left:0;top:0;font-size:13px;font-weight:700;color:red;text-shadow:-1px 0 0 white,-1px -1px 0 white,0 -1px 0 white,1px -1px 0 white,1px 0 0 white,1px 1px 0 white,0 1px 0 white,-1px 1px 0 white;white-space:nowrap;transform-origin:0;pointer-events:none;z-index:9999}.leaflet-measure-path-measurement>div{position:relative;margin-top:-50%;left:-50%}.leaflet-control-scale-line{border:1px solid #999;border-top:none;padding:0;text-align:center;white-space:nowrap;overflow:hidden;color:#fff;height:26px;line-height:26px;text-shadow:0 0 2px #fff}.leaflet-control-container>div{display:flex;align-items:flex-end}.leaflet-text-label{position:absolute;transform:translate(calc(-50% + 4px),-6px);padding:2px 4px;white-space:nowrap;cursor:default}")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { Color, CoordsUtil, Util, DomUtil, ObjectUtil, MathUtil, GeoUtil, ExceptionUtil, ArrayUtil, StringUtil } from "gis-common";
4
+ import { MathUtil, Color, CoordsUtil, Util, DomUtil, ObjectUtil, GeoUtil, ExceptionUtil, ArrayUtil, StringUtil } from "gis-common";
5
5
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
6
6
  function getDefaultExportFromCjs(x) {
7
7
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
@@ -17401,18 +17401,16 @@ leafletSrcExports.Marker.include({
17401
17401
  this.options.scale = 1 - (maxZoom - this._map._zoom) * perScale;
17402
17402
  } else if (this._map._zoom <= minZoom && hideOnMinZoom) {
17403
17403
  this._icon.style.display = "none";
17404
- } else if (this._map._zoom <= minZoom && !hideOnMinZoom) {
17405
- this.options.scale = minificationScale;
17406
17404
  }
17407
17405
  }
17408
17406
  if (this._map._rotate) {
17409
17407
  pos = this._map.rotatedPointToMapPanePoint(pos);
17410
17408
  }
17411
17409
  if (this._icon) {
17412
- leafletSrcExports.DomUtil.setPosition(this._icon, pos, rotation, pos, this.options.scale);
17410
+ leafletSrcExports.DomUtil.setPosition(this._icon, pos, rotation, pos, MathUtil.clamp(this.options.scale, minificationScale, 1));
17413
17411
  }
17414
17412
  if (this._shadow) {
17415
- leafletSrcExports.DomUtil.setPosition(this._shadow, pos, rotation, pos, this.options.scale);
17413
+ leafletSrcExports.DomUtil.setPosition(this._shadow, pos, rotation, pos, MathUtil.clamp(this.options.scale, minificationScale, 1));
17416
17414
  }
17417
17415
  this._zIndex = pos.y + this.options.zIndexOffset;
17418
17416
  this._resetZIndex();
@@ -26142,6 +26140,7 @@ const TextMarker = leafletSrcExports.Marker.extend({
26142
26140
  background: "rgba(0, 0, 0, 0)",
26143
26141
  minZoom: void 0,
26144
26142
  maxZoom: void 0,
26143
+ minificationScale: 1,
26145
26144
  clsName: "leaflet-text",
26146
26145
  offset: [6, 6]
26147
26146
  },
@@ -26982,7 +26981,9 @@ const RadarCircle = L.LayerGroup.extend({
26982
26981
  show: false,
26983
26982
  splitNum: 5,
26984
26983
  lineColor: "#000",
26985
- labelColor: "#000"
26984
+ labelColor: "#000",
26985
+ minZoom: 0,
26986
+ maxZoom: 23
26986
26987
  },
26987
26988
  material: {
26988
26989
  show: false,
@@ -27011,20 +27012,32 @@ const RadarCircle = L.LayerGroup.extend({
27011
27012
  },
27012
27013
  onAdd(map) {
27013
27014
  this.initializeCircle();
27015
+ this.initializeAxis();
27014
27016
  this.initializeScale();
27015
27017
  this.initializeMaterial();
27016
27018
  },
27017
27019
  onRemove() {
27018
- L.LayerGroup.prototype.removeLayer.call(this, this.materialEntity);
27019
27020
  L.LayerGroup.prototype.removeLayer.call(this, this.circleEntity);
27021
+ L.LayerGroup.prototype.removeLayer.call(this, this.materialEntity);
27022
+ this.axisEntity.forEach((axis) => {
27023
+ L.LayerGroup.prototype.removeLayer.call(this, axis);
27024
+ });
27025
+ this.scaleCircleEntity.forEach((circle) => {
27026
+ L.LayerGroup.prototype.removeLayer.call(this, circle);
27027
+ });
27028
+ this.labelCircleEntity.forEach((label) => {
27029
+ L.LayerGroup.prototype.removeLayer.call(this, label);
27030
+ });
27020
27031
  this.stopMotion();
27021
27032
  },
27022
27033
  initializeCircle() {
27023
27034
  var _a;
27024
27035
  (_a = this.circleEntity) == null ? void 0 : _a.remove();
27025
- this.axisEntity.forEach((entity) => entity.remove());
27026
27036
  this.circleEntity = new L.Circle(this.latLng, this.getCircleStyle());
27027
27037
  L.LayerGroup.prototype.addLayer.call(this, this.circleEntity);
27038
+ },
27039
+ initializeAxis() {
27040
+ this.axisEntity.forEach((entity) => entity.remove());
27028
27041
  if (!this.options.axis.show) return;
27029
27042
  const bounds = this.circleEntity.getBounds();
27030
27043
  this.axisEntity[0] = L.polyline(
@@ -27067,7 +27080,10 @@ const RadarCircle = L.LayerGroup.extend({
27067
27080
  const bounds = circle.getBounds();
27068
27081
  const label = this.labelCircleEntity[i - 1] = new L.Text(L.latLng(this.latLng.lat, bounds.getEast()), MathUtil.formatLength(radius), {
27069
27082
  color: this.options.scale.labelColor,
27070
- offset: [24, 16]
27083
+ offset: [24, 16],
27084
+ minZoom: this.options.scale.minZoom,
27085
+ maxZoom: this.options.scale.maxZoom,
27086
+ minificationScale: 1
27071
27087
  });
27072
27088
  L.LayerGroup.prototype.addLayer.call(this, label);
27073
27089
  }
@@ -27167,6 +27183,8 @@ const RadarCircle = L.LayerGroup.extend({
27167
27183
  setStyle(style = {}) {
27168
27184
  ObjectUtil.deepAssign(this.options, style);
27169
27185
  this.circleEntity.setStyle(this.getCircleStyle());
27186
+ this.initializeAxis();
27187
+ this.initializeScale();
27170
27188
  this.initializeMaterial();
27171
27189
  },
27172
27190
  createCounter(s = 5, e = 30, speed = 1) {
@@ -28778,7 +28796,7 @@ const Knob = leafletSrcExports.Draggable.extend({
28778
28796
  return this._toValue(leafletSrcExports.DomUtil.getPosition(this._element).y);
28779
28797
  }
28780
28798
  });
28781
- const Draw = leafletSrcExports.Handler.extend({
28799
+ const Draw$1 = leafletSrcExports.Handler.extend({
28782
28800
  options: {
28783
28801
  color: "#f00",
28784
28802
  weight: 2,
@@ -28980,12 +28998,12 @@ const Draw = leafletSrcExports.Handler.extend({
28980
28998
  }).addTo(_measurementLayer);
28981
28999
  }
28982
29000
  }
28983
- leafletSrcExports.Util.setOptions(this, Draw.prototype.options);
29001
+ leafletSrcExports.Util.setOptions(this, Draw$1.prototype.options);
28984
29002
  leafletSrcExports.Handler.prototype.disable.call(this);
28985
29003
  return this;
28986
29004
  }
28987
29005
  });
28988
- leafletSrcExports.Map.addInitHook("addHandler", "drawHandler", Draw);
29006
+ leafletSrcExports.Map.addInitHook("addHandler", "drawHandler", Draw$1);
28989
29007
  const ContextMenu = leafletSrcExports.Handler.extend({
28990
29008
  _touchstart: leafletSrcExports.Browser.msPointer ? "MSPointerDown" : leafletSrcExports.Browser.pointer ? "pointerdown" : "touchstart",
28991
29009
  initialize(map) {
@@ -29820,6 +29838,902 @@ const PolylineDecorator = L.FeatureGroup.extend({
29820
29838
  });
29821
29839
  }
29822
29840
  });
29841
+ const PlotConstants = {
29842
+ TWO_PI: Math.PI * 2,
29843
+ HALF_PI: Math.PI / 2,
29844
+ FITTING_COUNT: 100,
29845
+ ZERO_TOLERANCE: 1e-4
29846
+ };
29847
+ const proPoint = function(latlng) {
29848
+ return L.Projection.Mercator.project(latlng);
29849
+ };
29850
+ const unProPoint = function(proPt) {
29851
+ return L.Projection.Mercator.unproject(L.point(proPt));
29852
+ };
29853
+ const proPoints = function(latlngs) {
29854
+ const proPts = [];
29855
+ for (let i = 0; i < latlngs.length; i++) {
29856
+ const proPt = proPoint(latlngs[i]);
29857
+ proPts.push([proPt.x, proPt.y]);
29858
+ }
29859
+ return proPts;
29860
+ };
29861
+ const unProPoints = function(proPts) {
29862
+ const latlngs = [];
29863
+ for (let i = 0; i < proPts.length; i++) {
29864
+ const pt = unProPoint(proPts[i]);
29865
+ latlngs.push(pt);
29866
+ }
29867
+ return latlngs;
29868
+ };
29869
+ const distance = function(pnt1, pnt2) {
29870
+ return Math.sqrt(Math.pow(pnt1[0] - pnt2[0], 2) + Math.pow(pnt1[1] - pnt2[1], 2));
29871
+ };
29872
+ const getAzimuth = function(startPnt, endPnt) {
29873
+ let azimuth;
29874
+ const angle = Math.asin(Math.abs(endPnt[1] - startPnt[1]) / distance(startPnt, endPnt));
29875
+ if (endPnt[1] >= startPnt[1] && endPnt[0] >= startPnt[0]) azimuth = angle + Math.PI;
29876
+ else if (endPnt[1] >= startPnt[1] && endPnt[0] < startPnt[0]) azimuth = PlotConstants.TWO_PI - angle;
29877
+ else if (endPnt[1] < startPnt[1] && endPnt[0] < startPnt[0]) azimuth = angle;
29878
+ else if (endPnt[1] < startPnt[1] && endPnt[0] >= startPnt[0]) azimuth = Math.PI - angle;
29879
+ return azimuth;
29880
+ };
29881
+ const getThirdPoint = function(startPnt, endPnt, angle, distance2, clockWise) {
29882
+ const azimuth = getAzimuth(startPnt, endPnt);
29883
+ const alpha = clockWise ? azimuth + angle : azimuth - angle;
29884
+ const dx = distance2 * Math.cos(alpha);
29885
+ const dy = distance2 * Math.sin(alpha);
29886
+ return [endPnt[0] + dx, endPnt[1] + dy];
29887
+ };
29888
+ const wholeDistance = function(points) {
29889
+ let dis = 0;
29890
+ for (let i = 0; i < points.length - 1; i++) dis += distance(points[i], points[i + 1]);
29891
+ return dis;
29892
+ };
29893
+ const getBaseLength = function(points) {
29894
+ return Math.pow(wholeDistance(points), 0.99);
29895
+ };
29896
+ const isClockWise = function(pnt1, pnt2, pnt3) {
29897
+ return (pnt3[1] - pnt1[1]) * (pnt2[0] - pnt1[0]) > (pnt2[1] - pnt1[1]) * (pnt3[0] - pnt1[0]);
29898
+ };
29899
+ const mid = function(pnt1, pnt2) {
29900
+ return [(pnt1[0] + pnt2[0]) / 2, (pnt1[1] + pnt2[1]) / 2];
29901
+ };
29902
+ const getQBSplinePoints = function(points) {
29903
+ if (points.length <= 2) return points;
29904
+ const n = 2;
29905
+ const bSplinePoints = [];
29906
+ const m = points.length - n - 1;
29907
+ bSplinePoints.push(points[0]);
29908
+ for (let i = 0; i <= m; i++) {
29909
+ for (let t = 0; t <= 1; t += 0.05) {
29910
+ let x = 0;
29911
+ let y = 0;
29912
+ for (let k = 0; k <= n; k++) {
29913
+ const factor = getQuadricBSplineFactor(k, t);
29914
+ x += factor * points[i + k][0];
29915
+ y += factor * points[i + k][1];
29916
+ }
29917
+ bSplinePoints.push([x, y]);
29918
+ }
29919
+ }
29920
+ bSplinePoints.push(points[points.length - 1]);
29921
+ return bSplinePoints;
29922
+ };
29923
+ const getQuadricBSplineFactor = function(k, t) {
29924
+ if (k == 0) return Math.pow(t - 1, 2) / 2;
29925
+ if (k == 1) return (-2 * Math.pow(t, 2) + 2 * t + 1) / 2;
29926
+ if (k == 2) return Math.pow(t, 2) / 2;
29927
+ return 0;
29928
+ };
29929
+ const getAngleOfThreePoints = function(pntA, pntB, pntC) {
29930
+ const angle = getAzimuth(pntB, pntA) - getAzimuth(pntB, pntC);
29931
+ return angle < 0 ? angle + PlotConstants.TWO_PI : angle;
29932
+ };
29933
+ const getBezierPoints = function(points) {
29934
+ if (points.length <= 2) return points;
29935
+ const bezierPoints = [];
29936
+ const n = points.length - 1;
29937
+ for (let t = 0; t <= 1; t += 0.01) {
29938
+ let x = 0;
29939
+ let y = 0;
29940
+ for (let index = 0; index <= n; index++) {
29941
+ const factor = getBinomialFactor(n, index);
29942
+ const a = Math.pow(t, index);
29943
+ const b = Math.pow(1 - t, n - index);
29944
+ x += factor * a * b * points[index][0];
29945
+ y += factor * a * b * points[index][1];
29946
+ }
29947
+ bezierPoints.push([x, y]);
29948
+ }
29949
+ bezierPoints.push(points[n]);
29950
+ return bezierPoints;
29951
+ };
29952
+ const getBinomialFactor = function(n, index) {
29953
+ return getFactorial(n) / (getFactorial(index) * getFactorial(n - index));
29954
+ };
29955
+ const getFactorial = function(n) {
29956
+ if (n <= 1) return 1;
29957
+ if (n === 2) return 2;
29958
+ if (n === 3) return 6;
29959
+ if (n === 4) return 24;
29960
+ if (n === 5) return 120;
29961
+ let result = 1;
29962
+ for (let i = 1; i <= n; i++) result *= i;
29963
+ return result;
29964
+ };
29965
+ const getBisectorNormals = function(t, pnt1, pnt2, pnt3) {
29966
+ const normal = getNormal(pnt1, pnt2, pnt3);
29967
+ const dist = Math.sqrt(normal[0] * normal[0] + normal[1] * normal[1]);
29968
+ const uX = normal[0] / dist;
29969
+ const uY = normal[1] / dist;
29970
+ const d1 = distance(pnt1, pnt2);
29971
+ const d2 = distance(pnt2, pnt3);
29972
+ if (dist > PlotConstants.ZERO_TOLERANCE) {
29973
+ if (isClockWise(pnt1, pnt2, pnt3)) {
29974
+ var dt = t * d1;
29975
+ var x = pnt2[0] - dt * uY;
29976
+ var y = pnt2[1] + dt * uX;
29977
+ var bisectorNormalRight = [x, y];
29978
+ dt = t * d2;
29979
+ x = pnt2[0] + dt * uY;
29980
+ y = pnt2[1] - dt * uX;
29981
+ var bisectorNormalLeft = [x, y];
29982
+ } else {
29983
+ dt = t * d1;
29984
+ x = pnt2[0] + dt * uY;
29985
+ y = pnt2[1] - dt * uX;
29986
+ bisectorNormalRight = [x, y];
29987
+ dt = t * d2;
29988
+ x = pnt2[0] - dt * uY;
29989
+ y = pnt2[1] + dt * uX;
29990
+ bisectorNormalLeft = [x, y];
29991
+ }
29992
+ } else {
29993
+ x = pnt2[0] + t * (pnt1[0] - pnt2[0]);
29994
+ y = pnt2[1] + t * (pnt1[1] - pnt2[1]);
29995
+ bisectorNormalRight = [x, y];
29996
+ x = pnt2[0] + t * (pnt3[0] - pnt2[0]);
29997
+ y = pnt2[1] + t * (pnt3[1] - pnt2[1]);
29998
+ bisectorNormalLeft = [x, y];
29999
+ }
30000
+ return [bisectorNormalRight, bisectorNormalLeft];
30001
+ };
30002
+ const getNormal = function(pnt1, pnt2, pnt3) {
30003
+ let dX1 = pnt1[0] - pnt2[0];
30004
+ let dY1 = pnt1[1] - pnt2[1];
30005
+ const d1 = Math.sqrt(dX1 * dX1 + dY1 * dY1);
30006
+ dX1 /= d1;
30007
+ dY1 /= d1;
30008
+ let dX2 = pnt3[0] - pnt2[0];
30009
+ let dY2 = pnt3[1] - pnt2[1];
30010
+ const d2 = Math.sqrt(dX2 * dX2 + dY2 * dY2);
30011
+ dX2 /= d2;
30012
+ dY2 /= d2;
30013
+ const uX = dX1 + dX2;
30014
+ const uY = dY1 + dY2;
30015
+ return [uX, uY];
30016
+ };
30017
+ const getCubicValue = function(t, startPnt, cPnt1, cPnt2, endPnt) {
30018
+ t = Math.max(Math.min(t, 1), 0);
30019
+ const tp = 1 - t;
30020
+ const t2 = t * t;
30021
+ const t3 = t2 * t;
30022
+ const tp2 = tp * tp;
30023
+ const tp3 = tp2 * tp;
30024
+ const x = tp3 * startPnt[0] + 3 * tp2 * t * cPnt1[0] + 3 * tp * t2 * cPnt2[0] + t3 * endPnt[0];
30025
+ const y = tp3 * startPnt[1] + 3 * tp2 * t * cPnt1[1] + 3 * tp * t2 * cPnt2[1] + t3 * endPnt[1];
30026
+ return [x, y];
30027
+ };
30028
+ const PlotDraw = leafletSrcExports.Handler.extend({
30029
+ style: {
30030
+ color: "#f00",
30031
+ fillOpacity: 0,
30032
+ weight: 2
30033
+ },
30034
+ addHooks() {
30035
+ this._map.on("mousemove", this._mouseMove, this);
30036
+ this._map.on("click", this._mouseClick, this);
30037
+ this._map.on("dblclick", this._mouseDblClick, this);
30038
+ },
30039
+ removeHooks() {
30040
+ this._map.off("mousemove", this._mouseMove, this);
30041
+ this._map.off("click", this._mouseClick, this);
30042
+ this._map.off("dblclick", this._mouseDblClick, this);
30043
+ },
30044
+ _mouseMove(e) {
30045
+ this.tooltip.setLatLng(e.latlng);
30046
+ this._map.openTooltip(this.tooltip);
30047
+ this.plotShape.setPoints([...this.latlngs, e.latlng]);
30048
+ },
30049
+ _mouseClick(e) {
30050
+ this.latlngs = [...this.latlngs.filter((d) => d.lng !== e.latlng.lng && d.lat !== e.latlng.lat), e.latlng];
30051
+ if ([PlotTypes.STRAIGHT_ARROW, PlotTypes.ASSAULT_DIRECTION, PlotTypes.FINE_ARROW].includes(this.type)) {
30052
+ this.tooltip.setContent("双击完成绘制形状");
30053
+ this._map.off("click", this._mouseClick, this);
30054
+ } else {
30055
+ this.tooltip.setContent("点击继续绘制形状,双击完成绘制形状");
30056
+ }
30057
+ },
30058
+ _mouseDblClick(e) {
30059
+ this.latlngs = [...this.latlngs.filter((d) => d.lng !== e.latlng.lng && d.lat !== e.latlng.lat), e.latlng];
30060
+ this.plotShape.setPoints(this.latlngs);
30061
+ this.disable();
30062
+ this.finishedCallback && this.finishedCallback(this.plotShape);
30063
+ },
30064
+ enable(type, callback) {
30065
+ var _a, _b;
30066
+ this.type = type;
30067
+ this.finishedCallback = callback;
30068
+ this.latlngs = [];
30069
+ this.graphicLayer = L.featureGroup([]).addTo(this._map);
30070
+ this.plotShape = createPlot(type, [], this.style).addTo(this.graphicLayer);
30071
+ (_b = (_a = this._map).setCursor) == null ? void 0 : _b.call(_a, "draw");
30072
+ this.tooltip = L.tooltip().setContent("点击开始绘制形状");
30073
+ L.Handler.prototype.enable.call(this);
30074
+ },
30075
+ disable() {
30076
+ this.type = void 0;
30077
+ this._map._container.style.cursor = "default";
30078
+ this.latlngs = [];
30079
+ this._map.closeTooltip(this.tooltip);
30080
+ L.Handler.prototype.disable.call(this);
30081
+ }
30082
+ });
30083
+ leafletSrcExports.Map.addInitHook("addHandler", "PlotDraw", PlotDraw);
30084
+ const PlotTypes = {
30085
+ STRAIGHT_ARROW: "straightarrow",
30086
+ ASSAULT_DIRECTION: "assaultdirection",
30087
+ ATTACK_ARROW: "attackarrow",
30088
+ TAILED_ATTACK_ARROW: "tailedattackarrow",
30089
+ SQUAD_COMBAT: "squadcombat",
30090
+ TAILED_SQUAD_COMBAT: "tailedsquadcombat",
30091
+ FINE_ARROW: "finearrow",
30092
+ DOUBLE_ARROW: "doublearrow",
30093
+ GATHERING_PLACE: "gatheringplace"
30094
+ };
30095
+ const Draw = PlotDraw;
30096
+ const Plot = {
30097
+ isPlot() {
30098
+ return true;
30099
+ },
30100
+ getBaseType() {
30101
+ const geojson = this.toGeoJSON();
30102
+ let type = geojson.geometry.type;
30103
+ if (type === "MultiLineString" || type === "LineString") {
30104
+ type = "Polyline";
30105
+ }
30106
+ return type;
30107
+ },
30108
+ // 设置绘制图形需要的点
30109
+ setPoints(latlngs = []) {
30110
+ this._bounds = new L.LatLngBounds();
30111
+ this._setLatLngs([]);
30112
+ this._points = this._convertLatLngs(latlngs) || [];
30113
+ this._proPoints = proPoints(this._points);
30114
+ if (this.getPointCount() >= 1) {
30115
+ this.generate();
30116
+ }
30117
+ },
30118
+ // 设置投影点并更新对应的坐标点
30119
+ setProPoints(proPts) {
30120
+ const latlngs = unProPoints(proPts);
30121
+ this.setPoints(latlngs);
30122
+ },
30123
+ /* getLatLngs() {
30124
+ return this._points
30125
+ }, */
30126
+ // 获取控制点坐标
30127
+ getCtrlPoints() {
30128
+ let ctrlPts = [];
30129
+ switch (this.type) {
30130
+ case PlotTypes.SECTOR:
30131
+ case PlotTypes.ARC:
30132
+ ctrlPts = this.getPoints();
30133
+ if (ctrlPts.length < 3) {
30134
+ ctrlPts = this._ctrlPnts;
30135
+ }
30136
+ break;
30137
+ case PlotTypes.CIRCLE:
30138
+ ctrlPts = this.getPoints();
30139
+ if (ctrlPts.length < 2) {
30140
+ ctrlPts = this._ctrlPnts;
30141
+ }
30142
+ break;
30143
+ default:
30144
+ ctrlPts = this.getPoints();
30145
+ }
30146
+ return ctrlPts;
30147
+ },
30148
+ // 获取输入点
30149
+ getPoints() {
30150
+ return this._points;
30151
+ },
30152
+ // 获取输入点对应的投影点
30153
+ getProPoints() {
30154
+ return this._proPoints;
30155
+ },
30156
+ // 获取输入的点个数
30157
+ getPointCount() {
30158
+ return this._proPoints.length || 0;
30159
+ },
30160
+ toPlotJSON() {
30161
+ const setting = {
30162
+ type: this.type,
30163
+ points: this.getPoints(),
30164
+ options: this.options
30165
+ };
30166
+ return setting;
30167
+ },
30168
+ // 结束绘制
30169
+ finishDrawing() {
30170
+ }
30171
+ };
30172
+ const createPlot = function(type, points, options) {
30173
+ switch (type) {
30174
+ case PlotTypes.GATHERING_PLACE:
30175
+ return new GatheringPlace(points, options);
30176
+ case PlotTypes.STRAIGHT_ARROW:
30177
+ return new StraightArrow(points, options);
30178
+ case PlotTypes.ASSAULT_DIRECTION:
30179
+ return new AssaultDirection(points, options);
30180
+ case PlotTypes.ATTACK_ARROW:
30181
+ return new AttackArrow(points, options);
30182
+ case PlotTypes.FINE_ARROW:
30183
+ return new FineArrow(points, options);
30184
+ case PlotTypes.DOUBLE_ARROW:
30185
+ return new DoubleArrow(points, options);
30186
+ case PlotTypes.TAILED_ATTACK_ARROW:
30187
+ return new TailedAttackArrow(points, options);
30188
+ case PlotTypes.SQUAD_COMBAT:
30189
+ return new SquadCombat(points, options);
30190
+ case PlotTypes.TAILED_SQUAD_COMBAT:
30191
+ return new TailedSquadCombat(points, options);
30192
+ }
30193
+ return null;
30194
+ };
30195
+ const GatheringPlace = L.Polygon.extend({
30196
+ includes: Plot,
30197
+ options: {
30198
+ t: 0.4,
30199
+ fixPointCount: 3
30200
+ },
30201
+ initialize(latlngs, options) {
30202
+ L.setOptions(this, options);
30203
+ this.type = PlotTypes.GATHERING_PLACE;
30204
+ this.setPoints(latlngs);
30205
+ },
30206
+ generate() {
30207
+ let pnts = this._proPoints.concat([]);
30208
+ if (pnts.length < 2) {
30209
+ this._setLatLngs([]);
30210
+ return;
30211
+ }
30212
+ if (this.getPointCount() === 2) {
30213
+ const mid$12 = mid(pnts[0], pnts[1]);
30214
+ const d = distance(pnts[0], mid$12) / 0.9;
30215
+ const pnt = getThirdPoint(pnts[0], mid$12, PlotConstants.HALF_PI, d, true);
30216
+ pnts = [pnts[0], pnt, pnts[1]];
30217
+ }
30218
+ const mid$1 = mid(pnts[0], pnts[2]);
30219
+ pnts.push(mid$1, pnts[0], pnts[1]);
30220
+ let normals = [];
30221
+ for (let i = 0; i < pnts.length - 2; i++) {
30222
+ const pnt1 = pnts[i];
30223
+ const pnt2 = pnts[i + 1];
30224
+ const pnt3 = pnts[i + 2];
30225
+ const normalPoints = getBisectorNormals(this.options.t, pnt1, pnt2, pnt3);
30226
+ normals = normals.concat(normalPoints);
30227
+ }
30228
+ const count = normals.length;
30229
+ normals = [normals[count - 1]].concat(normals.slice(0, count - 1));
30230
+ const pList = [];
30231
+ for (let i = 0; i < pnts.length - 2; i++) {
30232
+ const pnt1 = pnts[i];
30233
+ const pnt2 = pnts[i + 1];
30234
+ pList.push(pnt1);
30235
+ for (let t = 0; t <= PlotConstants.FITTING_COUNT; t++) {
30236
+ const pnt = getCubicValue(t / PlotConstants.FITTING_COUNT, pnt1, normals[i * 2], normals[i * 2 + 1], pnt2);
30237
+ pList.push(pnt);
30238
+ }
30239
+ pList.push(pnt2);
30240
+ }
30241
+ this._setLatLngs([unProPoints(pList)]);
30242
+ this.redraw();
30243
+ }
30244
+ });
30245
+ const StraightArrow = L.Polyline.extend({
30246
+ includes: Plot,
30247
+ options: {
30248
+ fixPointCount: 2,
30249
+ maxArrowLength: 3e6,
30250
+ arrowLengthScale: 5
30251
+ },
30252
+ initialize(latlngs, options) {
30253
+ L.setOptions(this, options);
30254
+ this.type = PlotTypes.STRAIGHT_ARROW;
30255
+ this.setPoints(latlngs);
30256
+ },
30257
+ // 生成图形
30258
+ generate() {
30259
+ if (this.getPointCount() < 2) {
30260
+ return;
30261
+ }
30262
+ const pnts = this._proPoints;
30263
+ const pnt1 = pnts[0];
30264
+ const pnt2 = pnts[1];
30265
+ const distance$1 = distance(pnt1, pnt2);
30266
+ let len = distance$1 / this.options.arrowLengthScale;
30267
+ len = len > this.options.maxArrowLength ? this.options.maxArrowLength : len;
30268
+ const leftPnt = getThirdPoint(pnt1, pnt2, Math.PI / 6, len, false);
30269
+ const rightPnt = getThirdPoint(pnt1, pnt2, Math.PI / 6, len, true);
30270
+ const proPts = [pnt1, pnt2, leftPnt, pnt2, rightPnt];
30271
+ this._setLatLngs(unProPoints(proPts));
30272
+ this.redraw();
30273
+ }
30274
+ });
30275
+ const FineArrow = L.Polygon.extend({
30276
+ includes: Plot,
30277
+ options: {
30278
+ tailWidthFactor: 0.15,
30279
+ // 尾部宽度倍数
30280
+ neckWidthFactor: 0.2,
30281
+ // 颈部宽度倍数
30282
+ headWidthFactor: 0.25,
30283
+ // 头部宽度倍数
30284
+ headAngle: Math.PI / 8.5,
30285
+ // 头部角度
30286
+ neckAngle: Math.PI / 13,
30287
+ // 颈部角度
30288
+ fixPointCount: 2
30289
+ },
30290
+ initialize(latlngs, options) {
30291
+ L.setOptions(this, options);
30292
+ this.type = PlotTypes.FINE_ARROW;
30293
+ this.setPoints(latlngs);
30294
+ },
30295
+ // 生成图形
30296
+ generate() {
30297
+ if (this.getPointCount() < 2) {
30298
+ this._setLatLngs([]);
30299
+ return;
30300
+ }
30301
+ const pnts = this._proPoints;
30302
+ const pnt1 = pnts[0];
30303
+ const pnt2 = pnts[1];
30304
+ const len = getBaseLength(pnts);
30305
+ const tailWidth = len * this.options.tailWidthFactor;
30306
+ const neckWidth = len * this.options.neckWidthFactor;
30307
+ const headWidth = len * this.options.headWidthFactor;
30308
+ const tailLeft = getThirdPoint(pnt2, pnt1, PlotConstants.HALF_PI, tailWidth, true);
30309
+ const tailRight = getThirdPoint(pnt2, pnt1, PlotConstants.HALF_PI, tailWidth, false);
30310
+ const headLeft = getThirdPoint(pnt1, pnt2, this.options.headAngle, headWidth, false);
30311
+ const headRight = getThirdPoint(pnt1, pnt2, this.options.headAngle, headWidth, true);
30312
+ const neckLeft = getThirdPoint(pnt1, pnt2, this.options.neckAngle, neckWidth, false);
30313
+ const neckRight = getThirdPoint(pnt1, pnt2, this.options.neckAngle, neckWidth, true);
30314
+ const pList = [tailLeft, neckLeft, headLeft, pnt2, headRight, neckRight, tailRight];
30315
+ this._setLatLngs([unProPoints(pList)]);
30316
+ this.redraw();
30317
+ }
30318
+ });
30319
+ const AssaultDirection = FineArrow.extend({
30320
+ options: {
30321
+ tailWidthFactor: 0.2,
30322
+ neckWidthFactor: 0.25,
30323
+ headWidthFactor: 0.3,
30324
+ headAngle: Math.PI / 4,
30325
+ neckAngle: Math.PI * 0.17741,
30326
+ fixPointCount: 2
30327
+ },
30328
+ initialize(latlngs, options) {
30329
+ L.setOptions(this, options);
30330
+ this.type = PlotTypes.ASSAULT_DIRECTION;
30331
+ this.setPoints(latlngs);
30332
+ }
30333
+ });
30334
+ const AttackArrow = L.Polygon.extend({
30335
+ includes: Plot,
30336
+ options: {
30337
+ headHeightFactor: 0.18,
30338
+ headWidthFactor: 0.3,
30339
+ neckHeightFactor: 0.85,
30340
+ neckWidthFactor: 0.15,
30341
+ headTailFactor: 0.8
30342
+ },
30343
+ initialize(latlngs, options) {
30344
+ L.setOptions(this, options);
30345
+ this.type = PlotTypes.ATTACK_ARROW;
30346
+ this.setPoints(latlngs);
30347
+ },
30348
+ // 生成图形
30349
+ generate() {
30350
+ if (this.getPointCount() < 2) {
30351
+ this._setLatLngs([]);
30352
+ return;
30353
+ }
30354
+ if (this.getPointCount() === 2) {
30355
+ this._setLatLngs(this._points);
30356
+ this.redraw();
30357
+ return;
30358
+ }
30359
+ const pnts = this._proPoints;
30360
+ let tailLeft = pnts[0];
30361
+ let tailRight = pnts[1];
30362
+ if (isClockWise(pnts[0], pnts[1], pnts[2])) {
30363
+ tailLeft = pnts[1];
30364
+ tailRight = pnts[0];
30365
+ }
30366
+ const midTail = mid(tailLeft, tailRight);
30367
+ const bonePnts = [midTail].concat(pnts.slice(2));
30368
+ const headPnts = this.getArrowHeadPoints(bonePnts, tailLeft, tailRight);
30369
+ const neckLeft = headPnts[0];
30370
+ const neckRight = headPnts[4];
30371
+ const tailWidthFactor = distance(tailLeft, tailRight) / getBaseLength(bonePnts);
30372
+ const bodyPnts = this.getArrowBodyPoints(bonePnts, neckLeft, neckRight, tailWidthFactor);
30373
+ const count = bodyPnts.length;
30374
+ let leftPnts = [tailLeft].concat(bodyPnts.slice(0, count / 2));
30375
+ leftPnts.push(neckLeft);
30376
+ let rightPnts = [tailRight].concat(bodyPnts.slice(count / 2, count));
30377
+ rightPnts.push(neckRight);
30378
+ leftPnts = getQBSplinePoints(leftPnts);
30379
+ rightPnts = getQBSplinePoints(rightPnts);
30380
+ const pList = leftPnts.concat(headPnts, rightPnts.reverse());
30381
+ this._setLatLngs([unProPoints(pList)]);
30382
+ this.redraw();
30383
+ },
30384
+ // 获取箭头部分的点
30385
+ getArrowHeadPoints(points, tailLeft, tailRight) {
30386
+ let len = getBaseLength(points);
30387
+ let headHeight = len * this.options.headHeightFactor;
30388
+ const headPnt = points[points.length - 1];
30389
+ len = distance(headPnt, points[points.length - 2]);
30390
+ const tailWidth = distance(tailLeft, tailRight);
30391
+ if (headHeight > tailWidth * this.options.headTailFactor) {
30392
+ headHeight = tailWidth * this.options.headTailFactor;
30393
+ }
30394
+ const headWidth = headHeight * this.options.headWidthFactor;
30395
+ const neckWidth = headHeight * this.options.neckWidthFactor;
30396
+ headHeight = headHeight > len ? len : headHeight;
30397
+ const neckHeight = headHeight * this.options.neckHeightFactor;
30398
+ const headEndPnt = getThirdPoint(points[points.length - 2], headPnt, 0, headHeight, true);
30399
+ const neckEndPnt = getThirdPoint(points[points.length - 2], headPnt, 0, neckHeight, true);
30400
+ const headLeft = getThirdPoint(headPnt, headEndPnt, PlotConstants.HALF_PI, headWidth, false);
30401
+ const headRight = getThirdPoint(headPnt, headEndPnt, PlotConstants.HALF_PI, headWidth, true);
30402
+ const neckLeft = getThirdPoint(headPnt, neckEndPnt, PlotConstants.HALF_PI, neckWidth, false);
30403
+ const neckRight = getThirdPoint(headPnt, neckEndPnt, PlotConstants.HALF_PI, neckWidth, true);
30404
+ return [neckLeft, headLeft, headPnt, headRight, neckRight];
30405
+ },
30406
+ // 获取箭身部分的点
30407
+ getArrowBodyPoints(points, neckLeft, neckRight, tailWidthFactor) {
30408
+ const allLen = wholeDistance(points);
30409
+ const len = getBaseLength(points);
30410
+ const tailWidth = len * tailWidthFactor;
30411
+ const neckWidth = distance(neckLeft, neckRight);
30412
+ const widthDif = (tailWidth - neckWidth) / 2;
30413
+ let tempLen = 0;
30414
+ const leftBodyPnts = [];
30415
+ const rightBodyPnts = [];
30416
+ for (let i = 1; i < points.length - 1; i++) {
30417
+ const angle = getAngleOfThreePoints(points[i - 1], points[i], points[i + 1]) / 2;
30418
+ tempLen += distance(points[i - 1], points[i]);
30419
+ const w = (tailWidth / 2 - tempLen / allLen * widthDif) / Math.sin(angle);
30420
+ const left = getThirdPoint(points[i - 1], points[i], Math.PI - angle, w, true);
30421
+ const right = getThirdPoint(points[i - 1], points[i], angle, w, false);
30422
+ leftBodyPnts.push(left);
30423
+ rightBodyPnts.push(right);
30424
+ }
30425
+ return leftBodyPnts.concat(rightBodyPnts);
30426
+ }
30427
+ });
30428
+ const TailedAttackArrow = AttackArrow.extend({
30429
+ options: {
30430
+ tailWidthFactor: 0.1,
30431
+ swallowTailFactor: 1
30432
+ },
30433
+ initialize(latlngs, options) {
30434
+ L.setOptions(this, options);
30435
+ this.type = PlotTypes.TAILED_ATTACK_ARROW;
30436
+ this.swallowTailPnt = null;
30437
+ this.setPoints(latlngs);
30438
+ },
30439
+ // 生成图形
30440
+ generate() {
30441
+ if (this.getPointCount() < 2) {
30442
+ this._setLatLngs([]);
30443
+ return;
30444
+ }
30445
+ if (this.getPointCount() === 2) {
30446
+ this._setLatLngs(this._points);
30447
+ this.redraw();
30448
+ return;
30449
+ }
30450
+ const pnts = this._proPoints;
30451
+ let tailLeft = pnts[0];
30452
+ let tailRight = pnts[1];
30453
+ if (isClockWise(pnts[0], pnts[1], pnts[2])) {
30454
+ tailLeft = pnts[1];
30455
+ tailRight = pnts[0];
30456
+ }
30457
+ const midTail = mid(tailLeft, tailRight);
30458
+ const bonePnts = [midTail].concat(pnts.slice(2));
30459
+ const headPnts = this.getArrowHeadPoints(bonePnts, tailLeft, tailRight);
30460
+ const neckLeft = headPnts[0];
30461
+ const neckRight = headPnts[4];
30462
+ const tailWidth = distance(tailLeft, tailRight);
30463
+ const allLen = getBaseLength(bonePnts);
30464
+ const len = allLen * this.options.tailWidthFactor * this.options.swallowTailFactor;
30465
+ this.swallowTailPnt = getThirdPoint(bonePnts[1], bonePnts[0], 0, len, true);
30466
+ const factor = tailWidth / allLen;
30467
+ const bodyPnts = this.getArrowBodyPoints(bonePnts, neckLeft, neckRight, factor);
30468
+ const count = bodyPnts.length;
30469
+ let leftPnts = [tailLeft].concat(bodyPnts.slice(0, count / 2));
30470
+ leftPnts.push(neckLeft);
30471
+ let rightPnts = [tailRight].concat(bodyPnts.slice(count / 2, count));
30472
+ rightPnts.push(neckRight);
30473
+ leftPnts = getQBSplinePoints(leftPnts);
30474
+ rightPnts = getQBSplinePoints(rightPnts);
30475
+ const pList = leftPnts.concat(headPnts, rightPnts.reverse(), [this.swallowTailPnt, leftPnts[0]]);
30476
+ this._setLatLngs([unProPoints(pList)]);
30477
+ this.redraw();
30478
+ }
30479
+ });
30480
+ const SquadCombat = AttackArrow.extend({
30481
+ options: {
30482
+ tailWidthFactor: 0.1
30483
+ },
30484
+ initialize(latlngs, options) {
30485
+ L.setOptions(this, options);
30486
+ this.type = PlotTypes.SQUAD_COMBAT;
30487
+ this.setPoints(latlngs);
30488
+ },
30489
+ generate() {
30490
+ if (this.getPointCount() < 2) {
30491
+ this._setLatLngs([]);
30492
+ return;
30493
+ }
30494
+ const pnts = this._proPoints;
30495
+ const tailPnts = this.getTailPoints(pnts);
30496
+ const headPnts = this.getArrowHeadPoints(pnts, tailPnts[0], tailPnts[1]);
30497
+ const neckLeft = headPnts[0];
30498
+ const neckRight = headPnts[4];
30499
+ const bodyPnts = this.getArrowBodyPoints(pnts, neckLeft, neckRight, this.options.tailWidthFactor);
30500
+ const count = bodyPnts.length;
30501
+ let leftPnts = [tailPnts[0]].concat(bodyPnts.slice(0, count / 2));
30502
+ leftPnts.push(neckLeft);
30503
+ let rightPnts = [tailPnts[1]].concat(bodyPnts.slice(count / 2, count));
30504
+ rightPnts.push(neckRight);
30505
+ leftPnts = getQBSplinePoints(leftPnts);
30506
+ rightPnts = getQBSplinePoints(rightPnts);
30507
+ const pList = leftPnts.concat(headPnts, rightPnts.reverse());
30508
+ this._setLatLngs([unProPoints(pList)]);
30509
+ this.redraw();
30510
+ },
30511
+ getTailPoints(points) {
30512
+ const allLen = getBaseLength(points);
30513
+ const tailWidth = allLen * this.options.tailWidthFactor;
30514
+ const tailLeft = getThirdPoint(points[1], points[0], PlotConstants.HALF_PI, tailWidth, false);
30515
+ const tailRight = getThirdPoint(points[1], points[0], PlotConstants.HALF_PI, tailWidth, true);
30516
+ return [tailLeft, tailRight];
30517
+ }
30518
+ });
30519
+ const TailedSquadCombat = AttackArrow.extend({
30520
+ options: {
30521
+ tailWidthFactor: 0.1,
30522
+ swallowTailFactor: 1
30523
+ },
30524
+ initialize(latlngs, options) {
30525
+ L.setOptions(this, options);
30526
+ this.type = PlotTypes.TAILED_SQUAD_COMBAT;
30527
+ this.setPoints(latlngs);
30528
+ },
30529
+ generate() {
30530
+ if (this.getPointCount() < 2) {
30531
+ this._setLatLngs([]);
30532
+ return;
30533
+ }
30534
+ const pnts = this._proPoints;
30535
+ const tailPnts = this.getTailPoints(pnts);
30536
+ const headPnts = this.getArrowHeadPoints(pnts, tailPnts[0], tailPnts[2]);
30537
+ const neckLeft = headPnts[0];
30538
+ const neckRight = headPnts[4];
30539
+ const bodyPnts = this.getArrowBodyPoints(pnts, neckLeft, neckRight, this.options.tailWidthFactor);
30540
+ const count = bodyPnts.length;
30541
+ let leftPnts = [tailPnts[0]].concat(bodyPnts.slice(0, count / 2));
30542
+ leftPnts.push(neckLeft);
30543
+ let rightPnts = [tailPnts[2]].concat(bodyPnts.slice(count / 2, count));
30544
+ rightPnts.push(neckRight);
30545
+ leftPnts = getQBSplinePoints(leftPnts);
30546
+ rightPnts = getQBSplinePoints(rightPnts);
30547
+ const pList = leftPnts.concat(headPnts, rightPnts.reverse(), [tailPnts[1], leftPnts[0]]);
30548
+ this._setLatLngs([unProPoints(pList)]);
30549
+ this.redraw();
30550
+ },
30551
+ getTailPoints(points) {
30552
+ const allLen = getBaseLength(points);
30553
+ const tailWidth = allLen * this.options.tailWidthFactor;
30554
+ const tailLeft = getThirdPoint(points[1], points[0], PlotConstants.HALF_PI, tailWidth, false);
30555
+ const tailRight = getThirdPoint(points[1], points[0], PlotConstants.HALF_PI, tailWidth, true);
30556
+ const len = tailWidth * this.options.swallowTailFactor;
30557
+ const swallowTailPnt = getThirdPoint(points[1], points[0], 0, len, true);
30558
+ return [tailLeft, swallowTailPnt, tailRight];
30559
+ }
30560
+ });
30561
+ const DoubleArrow = L.Polygon.extend({
30562
+ includes: Plot,
30563
+ options: {
30564
+ headHeightFactor: 0.25,
30565
+ headWidthFactor: 0.3,
30566
+ neckHeightFactor: 0.85,
30567
+ neckWidthFactor: 0.15,
30568
+ fixPointCount: 4
30569
+ },
30570
+ initialize(latlngs, options) {
30571
+ L.setOptions(this, options);
30572
+ this.type = PlotTypes.DOUBLE_ARROW;
30573
+ this.connPoint = null;
30574
+ this.tempPoint4 = null;
30575
+ this.setPoints(latlngs);
30576
+ },
30577
+ finishDrawing() {
30578
+ if (this.getPointCount() === 3 && this.tempPoint4 != null) {
30579
+ this._proPoints.push(this.tempPoint4);
30580
+ }
30581
+ if (this.connPoint != null) {
30582
+ this._proPoints.push(this.connPoint);
30583
+ }
30584
+ },
30585
+ generate() {
30586
+ const count = this.getPointCount();
30587
+ if (count < 2) {
30588
+ this._setLatLngs([]);
30589
+ return;
30590
+ }
30591
+ if (count === 2) {
30592
+ this._setLatLngs(this._points);
30593
+ this.redraw();
30594
+ return;
30595
+ }
30596
+ const pnt1 = this._proPoints[0];
30597
+ const pnt2 = this._proPoints[1];
30598
+ const pnt3 = this._proPoints[2];
30599
+ if (count === 3) {
30600
+ this.tempPoint4 = this.getTempPoint4(pnt1, pnt2, pnt3);
30601
+ } else {
30602
+ this.tempPoint4 = this._proPoints[3];
30603
+ }
30604
+ if (count === 3 || count === 4) {
30605
+ this.connPoint = mid(pnt1, pnt2);
30606
+ } else {
30607
+ this.connPoint = this._proPoints[4];
30608
+ }
30609
+ let leftArrowPnts, rightArrowPnts;
30610
+ if (isClockWise(pnt1, pnt2, pnt3)) {
30611
+ leftArrowPnts = this.getArrowPoints(pnt1, this.connPoint, this.tempPoint4, false);
30612
+ rightArrowPnts = this.getArrowPoints(this.connPoint, pnt2, pnt3, true);
30613
+ } else {
30614
+ leftArrowPnts = this.getArrowPoints(pnt2, this.connPoint, pnt3, false);
30615
+ rightArrowPnts = this.getArrowPoints(this.connPoint, pnt1, this.tempPoint4, true);
30616
+ }
30617
+ const m = leftArrowPnts.length;
30618
+ const t = (m - 5) / 2;
30619
+ const llBodyPnts = leftArrowPnts.slice(0, t);
30620
+ const lArrowPnts = leftArrowPnts.slice(t, t + 5);
30621
+ let lrBodyPnts = leftArrowPnts.slice(t + 5, m);
30622
+ let rlBodyPnts = rightArrowPnts.slice(0, t);
30623
+ const rArrowPnts = rightArrowPnts.slice(t, t + 5);
30624
+ const rrBodyPnts = rightArrowPnts.slice(t + 5, m);
30625
+ rlBodyPnts = getBezierPoints(rlBodyPnts);
30626
+ const bodyPnts = getBezierPoints(rrBodyPnts.concat(llBodyPnts.slice(1)));
30627
+ lrBodyPnts = getBezierPoints(lrBodyPnts);
30628
+ const pList = rlBodyPnts.concat(rArrowPnts, bodyPnts, lArrowPnts, lrBodyPnts);
30629
+ this._setLatLngs([unProPoints(pList)]);
30630
+ this.redraw();
30631
+ },
30632
+ getArrowPoints(pnt1, pnt2, pnt3, clockWise) {
30633
+ const midPnt = mid(pnt1, pnt2);
30634
+ const len = distance(midPnt, pnt3);
30635
+ let midPnt1 = getThirdPoint(pnt3, midPnt, 0, len * 0.3, true);
30636
+ let midPnt2 = getThirdPoint(pnt3, midPnt, 0, len * 0.5, true);
30637
+ midPnt1 = getThirdPoint(midPnt, midPnt1, PlotConstants.HALF_PI, len / 5, clockWise);
30638
+ midPnt2 = getThirdPoint(midPnt, midPnt2, PlotConstants.HALF_PI, len / 4, clockWise);
30639
+ const points = [midPnt, midPnt1, midPnt2, pnt3];
30640
+ const arrowPnts = this.getArrowHeadPoints(points, this.options.headHeightFactor, this.options.headWidthFactor, this.options.neckHeightFactor, this.options.neckWidthFactor);
30641
+ const neckLeftPoint = arrowPnts[0];
30642
+ const neckRightPoint = arrowPnts[4];
30643
+ const tailWidthFactor = distance(pnt1, pnt2) / getBaseLength(points) / 2;
30644
+ const bodyPnts = this.getArrowBodyPoints(points, neckLeftPoint, neckRightPoint, tailWidthFactor);
30645
+ const n = bodyPnts.length;
30646
+ let lPoints = bodyPnts.slice(0, n / 2);
30647
+ let rPoints = bodyPnts.slice(n / 2, n);
30648
+ lPoints.push(neckLeftPoint);
30649
+ rPoints.push(neckRightPoint);
30650
+ lPoints = lPoints.reverse();
30651
+ lPoints.push(pnt2);
30652
+ rPoints = rPoints.reverse();
30653
+ rPoints.push(pnt1);
30654
+ return lPoints.reverse().concat(arrowPnts, rPoints);
30655
+ },
30656
+ getArrowHeadPoints(points, tailLeft, tailRight) {
30657
+ const len = getBaseLength(points);
30658
+ const headHeight = len * this.options.headHeightFactor;
30659
+ const headPnt = points[points.length - 1];
30660
+ distance(tailLeft, tailRight);
30661
+ const headWidth = headHeight * this.options.headWidthFactor;
30662
+ const neckWidth = headHeight * this.options.neckWidthFactor;
30663
+ const neckHeight = headHeight * this.options.neckHeightFactor;
30664
+ const headEndPnt = getThirdPoint(points[points.length - 2], headPnt, 0, headHeight, true);
30665
+ const neckEndPnt = getThirdPoint(points[points.length - 2], headPnt, 0, neckHeight, true);
30666
+ const headLeft = getThirdPoint(headPnt, headEndPnt, PlotConstants.HALF_PI, headWidth, false);
30667
+ const headRight = getThirdPoint(headPnt, headEndPnt, PlotConstants.HALF_PI, headWidth, true);
30668
+ const neckLeft = getThirdPoint(headPnt, neckEndPnt, PlotConstants.HALF_PI, neckWidth, false);
30669
+ const neckRight = getThirdPoint(headPnt, neckEndPnt, PlotConstants.HALF_PI, neckWidth, true);
30670
+ return [neckLeft, headLeft, headPnt, headRight, neckRight];
30671
+ },
30672
+ getArrowBodyPoints(points, neckLeft, neckRight, tailWidthFactor) {
30673
+ const allLen = wholeDistance(points);
30674
+ const len = getBaseLength(points);
30675
+ const tailWidth = len * tailWidthFactor;
30676
+ const neckWidth = distance(neckLeft, neckRight);
30677
+ const widthDif = (tailWidth - neckWidth) / 2;
30678
+ let tempLen = 0;
30679
+ const leftBodyPnts = [];
30680
+ const rightBodyPnts = [];
30681
+ for (let i = 1; i < points.length - 1; i++) {
30682
+ const angle = getAngleOfThreePoints(points[i - 1], points[i], points[i + 1]) / 2;
30683
+ tempLen += distance(points[i - 1], points[i]);
30684
+ const w = (tailWidth / 2 - tempLen / allLen * widthDif) / Math.sin(angle);
30685
+ const left = getThirdPoint(points[i - 1], points[i], Math.PI - angle, w, true);
30686
+ const right = getThirdPoint(points[i - 1], points[i], angle, w, false);
30687
+ leftBodyPnts.push(left);
30688
+ rightBodyPnts.push(right);
30689
+ }
30690
+ return leftBodyPnts.concat(rightBodyPnts);
30691
+ },
30692
+ // 计算对称点
30693
+ getTempPoint4(linePnt1, linePnt2, point) {
30694
+ const midPnt = mid(linePnt1, linePnt2);
30695
+ const len = distance(midPnt, point);
30696
+ const angle = getAngleOfThreePoints(linePnt1, midPnt, point);
30697
+ let symPnt, distance1, distance2, mid$1;
30698
+ if (angle < PlotConstants.HALF_PI) {
30699
+ distance1 = len * Math.sin(angle);
30700
+ distance2 = len * Math.cos(angle);
30701
+ mid$1 = getThirdPoint(linePnt1, midPnt, PlotConstants.HALF_PI, distance1, false);
30702
+ symPnt = getThirdPoint(midPnt, mid$1, PlotConstants.HALF_PI, distance2, true);
30703
+ } else if (angle >= PlotConstants.HALF_PI && angle < Math.PI) {
30704
+ distance1 = len * Math.sin(Math.PI - angle);
30705
+ distance2 = len * Math.cos(Math.PI - angle);
30706
+ mid$1 = getThirdPoint(linePnt1, midPnt, PlotConstants.HALF_PI, distance1, false);
30707
+ symPnt = getThirdPoint(midPnt, mid$1, PlotConstants.HALF_PI, distance2, false);
30708
+ } else if (angle >= Math.PI && angle < Math.PI * 1.5) {
30709
+ distance1 = len * Math.sin(angle - Math.PI);
30710
+ distance2 = len * Math.cos(angle - Math.PI);
30711
+ mid$1 = getThirdPoint(linePnt1, midPnt, PlotConstants.HALF_PI, distance1, true);
30712
+ symPnt = getThirdPoint(midPnt, mid$1, PlotConstants.HALF_PI, distance2, true);
30713
+ } else {
30714
+ distance1 = len * Math.sin(Math.PI * 2 - angle);
30715
+ distance2 = len * Math.cos(Math.PI * 2 - angle);
30716
+ mid$1 = getThirdPoint(linePnt1, midPnt, PlotConstants.HALF_PI, distance1, true);
30717
+ symPnt = getThirdPoint(midPnt, mid$1, PlotConstants.HALF_PI, distance2, false);
30718
+ }
30719
+ return symPnt;
30720
+ }
30721
+ });
30722
+ const Plot$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
30723
+ __proto__: null,
30724
+ AssaultDirection,
30725
+ AttackArrow,
30726
+ DoubleArrow,
30727
+ Draw,
30728
+ FineArrow,
30729
+ GatheringPlace,
30730
+ PlotTypes,
30731
+ SquadCombat,
30732
+ StraightArrow,
30733
+ TailedAttackArrow,
30734
+ TailedSquadCombat,
30735
+ createPlot
30736
+ }, Symbol.toStringTag, { value: "Module" }));
29823
30737
  function injectCss(cls) {
29824
30738
  const myStyle = document.createElement("style");
29825
30739
  const doc = document.head || document.documentElement;
@@ -30013,6 +30927,8 @@ function injectCss(cls) {
30013
30927
  scaleControl: {
30014
30928
  show: true
30015
30929
  },
30930
+ rotate: false,
30931
+ rotateControl: false,
30016
30932
  minZoom: 5,
30017
30933
  maxZoom: 19,
30018
30934
  contextmenu: true,
@@ -30120,7 +31036,7 @@ function injectCss(cls) {
30120
31036
  _L.WMTS = WMTS;
30121
31037
  _L.WMS = wms;
30122
31038
  _L.Knob = Knob;
30123
- _L.Draw = Draw;
31039
+ _L.Draw = Draw$1;
30124
31040
  _L.ContextMenu = ContextMenu;
30125
31041
  _L.KeyBoard = KeyBoard;
30126
31042
  _L.EagleMap = EagleMap;
@@ -30132,6 +31048,7 @@ function injectCss(cls) {
30132
31048
  _L.Symbol = Symbol$1;
30133
31049
  _L.PolylineDecorator = PolylineDecorator;
30134
31050
  _L.RadarCircle = RadarCircle;
31051
+ _L.Plot = Plot$1;
30135
31052
  return _this.L = _L;
30136
31053
  })(window);
30137
31054
  export {
@@ -30140,7 +31057,7 @@ export {
30140
31057
  CanvasMarker,
30141
31058
  CircleMaterialType,
30142
31059
  ContextMenu,
30143
- Draw,
31060
+ Draw$1 as Draw,
30144
31061
  EagleMap,
30145
31062
  KeyBoard,
30146
31063
  Knob,