gis-leaflet-helper 3.3.2 → 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,
@@ -27079,7 +27080,10 @@ const RadarCircle = L.LayerGroup.extend({
27079
27080
  const bounds = circle.getBounds();
27080
27081
  const label = this.labelCircleEntity[i - 1] = new L.Text(L.latLng(this.latLng.lat, bounds.getEast()), MathUtil.formatLength(radius), {
27081
27082
  color: this.options.scale.labelColor,
27082
- offset: [24, 16]
27083
+ offset: [24, 16],
27084
+ minZoom: this.options.scale.minZoom,
27085
+ maxZoom: this.options.scale.maxZoom,
27086
+ minificationScale: 1
27083
27087
  });
27084
27088
  L.LayerGroup.prototype.addLayer.call(this, label);
27085
27089
  }
@@ -28792,7 +28796,7 @@ const Knob = leafletSrcExports.Draggable.extend({
28792
28796
  return this._toValue(leafletSrcExports.DomUtil.getPosition(this._element).y);
28793
28797
  }
28794
28798
  });
28795
- const Draw = leafletSrcExports.Handler.extend({
28799
+ const Draw$1 = leafletSrcExports.Handler.extend({
28796
28800
  options: {
28797
28801
  color: "#f00",
28798
28802
  weight: 2,
@@ -28994,12 +28998,12 @@ const Draw = leafletSrcExports.Handler.extend({
28994
28998
  }).addTo(_measurementLayer);
28995
28999
  }
28996
29000
  }
28997
- leafletSrcExports.Util.setOptions(this, Draw.prototype.options);
29001
+ leafletSrcExports.Util.setOptions(this, Draw$1.prototype.options);
28998
29002
  leafletSrcExports.Handler.prototype.disable.call(this);
28999
29003
  return this;
29000
29004
  }
29001
29005
  });
29002
- leafletSrcExports.Map.addInitHook("addHandler", "drawHandler", Draw);
29006
+ leafletSrcExports.Map.addInitHook("addHandler", "drawHandler", Draw$1);
29003
29007
  const ContextMenu = leafletSrcExports.Handler.extend({
29004
29008
  _touchstart: leafletSrcExports.Browser.msPointer ? "MSPointerDown" : leafletSrcExports.Browser.pointer ? "pointerdown" : "touchstart",
29005
29009
  initialize(map) {
@@ -29834,6 +29838,902 @@ const PolylineDecorator = L.FeatureGroup.extend({
29834
29838
  });
29835
29839
  }
29836
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" }));
29837
30737
  function injectCss(cls) {
29838
30738
  const myStyle = document.createElement("style");
29839
30739
  const doc = document.head || document.documentElement;
@@ -30027,6 +30927,8 @@ function injectCss(cls) {
30027
30927
  scaleControl: {
30028
30928
  show: true
30029
30929
  },
30930
+ rotate: false,
30931
+ rotateControl: false,
30030
30932
  minZoom: 5,
30031
30933
  maxZoom: 19,
30032
30934
  contextmenu: true,
@@ -30134,7 +31036,7 @@ function injectCss(cls) {
30134
31036
  _L.WMTS = WMTS;
30135
31037
  _L.WMS = wms;
30136
31038
  _L.Knob = Knob;
30137
- _L.Draw = Draw;
31039
+ _L.Draw = Draw$1;
30138
31040
  _L.ContextMenu = ContextMenu;
30139
31041
  _L.KeyBoard = KeyBoard;
30140
31042
  _L.EagleMap = EagleMap;
@@ -30146,6 +31048,7 @@ function injectCss(cls) {
30146
31048
  _L.Symbol = Symbol$1;
30147
31049
  _L.PolylineDecorator = PolylineDecorator;
30148
31050
  _L.RadarCircle = RadarCircle;
31051
+ _L.Plot = Plot$1;
30149
31052
  return _this.L = _L;
30150
31053
  })(window);
30151
31054
  export {
@@ -30154,7 +31057,7 @@ export {
30154
31057
  CanvasMarker,
30155
31058
  CircleMaterialType,
30156
31059
  ContextMenu,
30157
- Draw,
31060
+ Draw$1 as Draw,
30158
31061
  EagleMap,
30159
31062
  KeyBoard,
30160
31063
  Knob,