{"version":3,"file":"ExclusiveEconomicZoneSymbol.mjs","sources":["../../../../../../../packages/sdk/plugins/AreaView/layer/ExclusiveEconomicZoneSymbol.ts"],"sourcesContent":["import * as L from 'leaflet'\nimport { CanvasShipUtils } from '@map-sdk/sdk/utils/CanvasShipUtils'\nimport { AreaViewBase } from '@map-sdk/sdk/plugins/AreaView/AreaViewBase'\nimport type { AreaViewBaseOptions } from '@map-sdk/sdk/plugins/AreaView/AreaViewBase'\nimport type { MyMap } from '@map-sdk/sdk/ShipxyAPISDK'\n\n/**\n * 专属经济区区域图形展示类\n */\nclass ExclusiveEconomicZoneSymbol extends AreaViewBase {\n  _show(): this {\n    if (!this._data) {\n      console.error('区域图形展示，请求无数据！')\n      return this\n    }\n\n    const plackmarks = this._data.folder.plackmark\n    let color = '#333'\n    if ('MT_SATELLITE' === this._map.mapType) {\n      color = '#fff'\n    }\n\n    for (const plackmark of plackmarks) {\n      const name = plackmark.name\n      const translatedName = !CanvasShipUtils.isEmpty(name)\n        ? `专属经济区： ${name}`\n        : name\n      const polygons = plackmark.polygon\n\n      for (const polygon of polygons) {\n        const outerBoundaryIs = polygon.outerBoundaryIs\n        const innerBoundaryIs = polygon.innerBoundaryIs\n\n        if (outerBoundaryIs.length > 0) {\n          this.drawBoundary(outerBoundaryIs, color, translatedName)\n        }\n        if (innerBoundaryIs.length > 0) {\n          this.drawBoundary(innerBoundaryIs, '', translatedName)\n        }\n      }\n    }\n\n    return this\n  }\n\n  drawBoundary(boundarys: any[], borderColor: string, title: string): void {\n    for (const boundary of boundarys) {\n      const coordinates = boundary.coordinates.split(',')\n      const latlngs: L.LatLngExpression[] = []\n      const latlng360: L.LatLngExpression[] = []\n\n      for (let j = 0; j < coordinates.length / 2; j++) {\n        const lng = coordinates[2 * j]\n        const lat = coordinates[2 * j + 1]\n        latlngs.push(L.latLng(lat, lng))\n        latlng360.push(L.latLng(lat, Number(lng) + 360))\n      }\n\n      if (latlngs.length > 0) {\n        const polygon1 = L.polygon(latlngs, {\n          color: borderColor,\n          fillOpacity: 0.25,\n          weight: 1,\n          ...this.options,\n        })\n\n        const polygon2 = L.polygon(latlng360, {\n          color: borderColor,\n          fillOpacity: 0.25,\n          weight: 1,\n          ...this.options,\n        })\n\n        if (this.options.isShowName && title) {\n          const getShowHtml = (): string => {\n            return `\n                <div class=\"title\">${title}</div>\n            `\n          }\n\n          const options: L.PopupOptions = {\n            className: 'area-popup',\n            closeButton: false,\n          }\n\n          polygon1\n            .bindPopup(getShowHtml, options)\n            .on('mousemove', (e) => {\n              e.target.openPopup(e.latlng)\n            })\n            .on('mouseout', (e) => {\n              e.target.closePopup()\n            })\n\n          polygon2\n            .bindPopup(getShowHtml, options)\n            .on('mousemove', (e) => {\n              e.target.openPopup(e.latlng)\n            })\n            .on('mouseout', (e) => {\n              e.target.closePopup()\n            })\n\n          polygon2.on('mouseover', (e) => {\n            e.target.setStyle({\n              fillColor: '#ff0000',\n              fillOpacity: 0.2,\n            })\n          })\n          polygon2.on('mouseout', (e) => {\n            e.target.setStyle({\n              fillColor: '#333',\n              fillOpacity: 0.2,\n            })\n          })\n          polygon1.on('mouseover', (e) => {\n            e.target.setStyle({\n              fillColor: '#ff0000',\n              fillOpacity: 0.2,\n            })\n          })\n          polygon1.on('mouseout', (e) => {\n            e.target.setStyle({\n              fillColor: '#333',\n              fillOpacity: 0.2,\n            })\n          })\n\n          polygon1.addTo(this._map)\n          this._areaLayers.push(polygon1)\n          polygon2.addTo(this._map)\n          this._areaLayers.push(polygon2)\n        }\n      }\n    }\n  }\n}\n\nfunction exclusiveEconomicZoneSymbol(\n  map: MyMap,\n  options: Partial<AreaViewBaseOptions>\n): ExclusiveEconomicZoneSymbol {\n  return new ExclusiveEconomicZoneSymbol(map, options)\n}\n\nexport { ExclusiveEconomicZoneSymbol, exclusiveEconomicZoneSymbol }\n"],"names":["y","d","_show","this","_data","e","folder","plackmark","a","_map","mapType","i","l","name","n","g","isEmpty","r","polygon","p","t","outerBoundaryIs","s","innerBoundaryIs","length","drawBoundary","coordinates","split","c","push","u","latLng","Number","color","fillOpacity","weight","options","isShowName","f","className","closeButton","bindPopup","on","o","target","openPopup","latlng","closePopup","setStyle","fillColor","addTo","_areaLayers","h","m"],"mappings":"kJAAyK,MAAMA,UAAUC,EAAE,KAAAC,GAAQ,IAAIC,KAAKC,MAAM,OAAuGD,KAAK,MAAME,EAAEF,KAAKC,MAAME,OAAOC,UAAU,IAAIC,EAAE,OAA2B,iBAApBL,KAAKM,KAAKC,UAA2BF,EAAE,QAAQ,IAAI,MAAMG,KAAKN,EAAE,CAAC,MAAMO,EAAED,EAAEE,KAAKC,EAAEC,EAAEC,QAAQJ,GAAGA,EAAE,UAAwCA,IAAIK,EAAEN,EAAEO,QAAQ,IAAI,MAAMC,KAAKF,EAAE,CAAC,MAAMG,EAAED,EAAEE,gBAAgBC,EAAEH,EAAEI,gBAAgBH,EAAEI,OAAO,GAAGrB,KAAKsB,aAAaL,EAAEZ,EAAEM,GAAGQ,EAAEE,OAAO,GAAGrB,KAAKsB,aAAaH,EAAE,GAAGR,EAAE,CAAC,CAAC,OAAOX,IAAI,CAAC,YAAAsB,CAAapB,EAAEG,EAAEG,GAAG,IAAI,MAAMC,KAAKP,EAAE,CAAC,MAAMS,EAAEF,EAAEc,YAAYC,MAAM,KAAKV,EAAE,GAAGE,EAAE,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEN,EAAEU,OAAO,EAAEJ,IAAI,CAAC,MAAME,EAAER,EAAE,EAAEM,GAAGQ,EAAEd,EAAE,EAAEM,EAAE,GAAGH,EAAEY,KAAKC,EAAEC,OAAOH,EAAEN,IAAIH,EAAEU,KAAKC,EAAEC,OAAOH,EAAEI,OAAOV,GAAG,KAAK,CAAC,GAAGL,EAAEO,OAAO,EAAE,CAAC,MAAMJ,EAAEU,EAAEZ,QAAQD,EAAE,CAACgB,MAAMzB,EAAE0B,YAAY,IAAIC,OAAO,KAAKhC,KAAKiC,UAAUd,EAAEQ,EAAEZ,QAAQC,EAAE,CAACc,MAAMzB,EAAE0B,YAAY,IAAIC,OAAO,KAAKhC,KAAKiC,UAAU,GAAGjC,KAAKiC,QAAQC,YAAY1B,EAAE,CAAC,MAAMiB,EAAE,IAAI,wCAChgCjB,wBACvB2B,EAAE,CAACC,UAAU,aAAaC,aAAY,GAAIpB,EAAEqB,UAAUb,EAAEU,GAAGI,GAAG,aAAYC,IAAIA,EAAEC,OAAOC,UAAUF,EAAEG,WAAUJ,GAAG,YAAWC,IAAIA,EAAEC,OAAOG,gBAAezB,EAAEmB,UAAUb,EAAEU,GAAGI,GAAG,aAAYC,IAAIA,EAAEC,OAAOC,UAAUF,EAAEG,WAAUJ,GAAG,YAAWC,IAAIA,EAAEC,OAAOG,gBAAezB,EAAEoB,GAAG,aAAYC,IAAIA,EAAEC,OAAOI,SAAS,CAACC,UAAU,UAAUf,YAAY,QAAOZ,EAAEoB,GAAG,YAAWC,IAAIA,EAAEC,OAAOI,SAAS,CAACC,UAAU,OAAOf,YAAY,QAAOd,EAAEsB,GAAG,aAAYC,IAAIA,EAAEC,OAAOI,SAAS,CAACC,UAAU,UAAUf,YAAY,QAAOd,EAAEsB,GAAG,YAAWC,IAAIA,EAAEC,OAAOI,SAAS,CAACC,UAAU,OAAOf,YAAY,QAAOd,EAAE8B,MAAM/C,KAAKM,MAAMN,KAAKgD,YAAYtB,KAAKT,GAAGE,EAAE4B,MAAM/C,KAAKM,MAAMN,KAAKgD,YAAYtB,KAAKP,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS8B,EAAEC,EAAEhD,GAAG,OAAO,IAAIL,EAAEqD,EAAEhD,EAAE"}