import HPaaSL7 from "../../../../hpaas-core/HPaaSL7"; import { Popup } from "@antv/l7"; import { eventType } from "./IRender"; import PolygonRender from "./IRender"; import PolygonSelector from "./PolygonSelector"; class PolygonRenderL7 implements PolygonRender { private hpaas: HPaaSL7; private _popup?: Popup; public inited = false; private tool: PolygonSelector; constructor(tool: PolygonSelector) { this.hpaas = tool.hpaas as HPaaSL7; this.tool = tool; this._popup = new Popup({ // offsets: [iconSize / 2, 0], closeButton: false, stopPropagation: false, anchor: "bottom", }).setLnglat({ lng: 0, lat: 0 }); } bindEvent(events: eventType) { this.hpaas.l7Scene.on("mousemove", (e) => { let lng = e.lnglat ? e.lnglat.lng : e.lngLat.lng; let lat = e.lnglat ? e.lnglat.lat : e.lngLat.lat; if (this.tool.toolsCenter.options.pinBaseUnit && this.hpaas.baseUnit?.segmentsIsShow) { const newP = this.hpaas.baseUnit?.getNearestPoint([lng, lat]); if (newP) { lng = newP.geometry.coordinates[0]; lat = newP.geometry.coordinates[1]; } } events.mousemove({ lnglat: { lng, lat, }, feature: e.feature, }); }); this.hpaas.l7Scene.on("click", (e) => { let lng = e.lnglat ? e.lnglat.lng : e.lngLat.lng; let lat = e.lnglat ? e.lnglat.lat : e.lngLat.lat; if (this.tool.toolsCenter.options.pinBaseUnit && this.hpaas.baseUnit?.segmentsIsShow) { const newP = this.hpaas.baseUnit?.getNearestPoint([lng, lat]); if (newP) { lng = newP.geometry.coordinates[0]; lat = newP.geometry.coordinates[1]; } } events.click({ lnglat: { lng, lat, }, feature: e.feature, }); }); } popup = { html: (html: string) => { this._popup?.setHTML(html); }, pos: (pos: { lng: number; lat: number }) => { this._popup?.setLnglat([pos.lng, pos.lat]); }, show: (html?: string, pos?: { lng: number; lat: number }) => { if (this.hpaas.sceneLoaded) { this._popup && this.hpaas.l7Scene.addPopup(this._popup); html && this._popup?.setHTML(html); pos && this._popup?.setLnglat([pos.lng, pos.lat]); this._popup?.open(); } }, hide: () => { this._popup?.close(); }, }; } export default PolygonRenderL7;