@antv/l7-component 2.6.15 → 2.6.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/marker.js CHANGED
@@ -311,6 +311,7 @@ var Marker = function (_EventEmitter) {
311
311
 
312
312
  if (element) {
313
313
  element.style.display = 'block';
314
+ element.style.whiteSpace = 'nowrap';
314
315
  var container = this.mapsService.getContainer();
315
316
  var containerWidth = 0;
316
317
  var containerHeight = 0;
package/es/marker.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker.ts"],"names":["TYPES","anchorTranslate","anchorType","applyAnchorClass","bindAll","DOM","EventEmitter","Marker","option","e","emit","type","target","data","markerOption","extData","lngLat","getDefault","init","element","undefined","anchor","BOTTOM","offsets","color","draggable","scene","mapsService","get","IMapService","sceneSerive","ISceneService","getMarkerContainer","appendChild","registerMarkerEvent","on","update","added","off","onMapClick","addDragHandler","onUp","unRegisterMarkerEvent","removeAllListeners","remove","popup","Array","isArray","lng","lat","setLnglat","el","once","setElement","openPopup","isOpen","addTo","closePopup","Error","updatePosition","setTransform","togglePopup","bounds","getBounds","pos","lngLatToContainer","style","display","container","getContainer","containerWidth","containerHeight","scrollWidth","scrollHeight","Math","abs","x","newPos","y","left","top","defaultMarker","create","svg","document","createElementNS","setAttributeNS","path","addClass","Object","keys","forEach","key","value","addEventListener","eventHandle","getElement","removeEventListener"],"mappings":"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","sourcesContent":["import {\n ILngLat,\n IMapService,\n IMarkerOption,\n IPoint,\n IPopup,\n ISceneService,\n TYPES,\n} from '@antv/l7-core';\nimport {\n anchorTranslate,\n anchorType,\n applyAnchorClass,\n bindAll,\n DOM,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\n\n// marker 支持 dragger 未完成\nexport default class Marker extends EventEmitter {\n private markerOption: IMarkerOption;\n private defaultMarker: boolean;\n private popup: IPopup;\n private mapsService: IMapService<unknown>;\n private sceneSerive: ISceneService;\n private lngLat: ILngLat;\n private scene: Container;\n private added: boolean = false;\n constructor(option?: Partial<IMarkerOption>) {\n super();\n this.markerOption = {\n ...this.getDefault(),\n ...option,\n };\n bindAll(['update', 'onMove', 'onUp', 'addDragHandler', 'onMapClick'], this);\n this.init();\n }\n\n public getDefault() {\n return {\n element: undefined, // DOM element\n anchor: anchorType.BOTTOM,\n offsets: [0, 0],\n color: '#5B8FF9',\n draggable: false,\n };\n }\n\n public addTo(scene: Container) {\n // this.remove();\n this.scene = scene;\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n this.sceneSerive = scene.get<ISceneService>(TYPES.ISceneService);\n const { element, draggable } = this.markerOption;\n // this.sceneSerive.getSceneContainer().appendChild(element as HTMLElement);\n this.mapsService.getMarkerContainer().appendChild(element as HTMLElement);\n this.registerMarkerEvent(element as HTMLElement);\n this.mapsService.on('camerachange', this.update); // 注册高德1.x 的地图事件监听\n this.mapsService.on('viewchange', this.update); // 注册高德2.0 的地图事件监听\n this.update();\n this.added = true;\n this.emit('added');\n return this;\n }\n\n public remove() {\n if (this.mapsService) {\n this.mapsService.off('click', this.onMapClick);\n this.mapsService.off('move', this.update);\n this.mapsService.off('moveend', this.update);\n this.mapsService.off('mousedown', this.addDragHandler);\n this.mapsService.off('touchstart', this.addDragHandler);\n this.mapsService.off('mouseup', this.onUp);\n this.mapsService.off('touchend', this.onUp);\n }\n this.unRegisterMarkerEvent();\n this.removeAllListeners();\n const { element } = this.markerOption;\n if (element) {\n DOM.remove(element);\n }\n if (this.popup) {\n this.popup.remove();\n }\n return this;\n }\n\n public setLnglat(lngLat: ILngLat | IPoint) {\n this.lngLat = lngLat as ILngLat;\n if (Array.isArray(lngLat)) {\n this.lngLat = {\n lng: lngLat[0],\n lat: lngLat[1],\n };\n }\n\n if (this.popup) {\n this.popup.setLnglat(this.lngLat);\n }\n this.update();\n return this;\n }\n\n public getLnglat(): ILngLat {\n return this.lngLat;\n }\n\n public getElement(): HTMLElement {\n return this.markerOption.element as HTMLElement;\n }\n\n public setElement(el: HTMLElement): this {\n if (!this.added) {\n this.once('added', () => {\n this.setElement(el);\n });\n return this;\n }\n const { element } = this.markerOption;\n if (element) {\n DOM.remove(element);\n }\n this.markerOption.element = el;\n this.init();\n this.mapsService.getMarkerContainer().appendChild(el as HTMLElement);\n this.registerMarkerEvent(el as HTMLElement);\n this.update();\n return this;\n }\n\n public openPopup(): this {\n if (!this.added) {\n this.once('added', () => {\n this.openPopup();\n });\n return this;\n }\n const popup = this.popup;\n if (!popup) {\n return this;\n }\n if (!popup.isOpen()) {\n popup.addTo(this.scene);\n }\n return this;\n }\n\n public closePopup(): this {\n if (!this.added) {\n this.once('added', () => {\n this.closePopup();\n });\n }\n const popup = this.popup;\n if (popup) {\n popup.remove();\n }\n return this;\n }\n\n public setPopup(popup: IPopup) {\n this.popup = popup;\n if (this.lngLat) {\n this.popup.setLnglat(this.lngLat);\n }\n return this;\n }\n\n public togglePopup() {\n const popup = this.popup;\n if (!popup) {\n return this;\n } else if (popup.isOpen()) {\n popup.remove();\n } else {\n popup.addTo(this.scene);\n }\n return this;\n }\n\n public getPopup() {\n return this.popup;\n }\n\n public getOffset(): number[] {\n return this.markerOption.offsets;\n }\n\n public setDraggable(draggable: boolean) {\n throw new Error('Method not implemented.');\n }\n\n public isDraggable() {\n return this.markerOption.draggable;\n }\n\n public getExtData() {\n return this.markerOption.extData;\n }\n\n public setExtData(data: any) {\n this.markerOption.extData = data;\n }\n\n private update() {\n if (!this.mapsService) {\n return;\n }\n const { element, anchor } = this.markerOption;\n this.updatePosition();\n DOM.setTransform(element as HTMLElement, `${anchorTranslate[anchor]}`);\n }\n\n private onMapClick(e: MouseEvent) {\n const { element } = this.markerOption;\n if (this.popup && element) {\n this.togglePopup();\n }\n }\n\n private updatePosition() {\n if (!this.mapsService) {\n return;\n }\n const { element, offsets } = this.markerOption;\n const { lng, lat } = this.lngLat;\n const bounds = this.mapsService.getBounds();\n const pos = this.mapsService.lngLatToContainer([lng, lat]);\n\n if (element) {\n element.style.display = 'block';\n const container = this.mapsService.getContainer();\n let containerWidth = 0;\n let containerHeight = 0;\n if (container) {\n containerWidth = container.scrollWidth;\n containerHeight = container.scrollHeight;\n }\n // 当前可视区域包含跨日界线\n if (Math.abs(bounds[0][0]) > 180 || Math.abs(bounds[1][0]) > 180) {\n if (pos.x > containerWidth) {\n // 日界线右侧点左移\n const newPos = this.mapsService.lngLatToContainer([lng - 360, lat]);\n pos.x = newPos.x;\n }\n if (pos.x < 0) {\n // 日界线左侧点右移\n const newPos = this.mapsService.lngLatToContainer([lng + 360, lat]);\n pos.x = newPos.x;\n }\n }\n // 不在当前可视区域内隐藏点\n if (\n pos.x > containerWidth ||\n pos.x < 0 ||\n pos.y > containerHeight ||\n pos.y < 0\n ) {\n element.style.display = 'none';\n }\n element.style.left = pos.x + offsets[0] + 'px';\n element.style.top = pos.y - offsets[1] + 'px';\n }\n }\n\n private init() {\n let { element } = this.markerOption;\n const { color, anchor } = this.markerOption;\n if (!element) {\n this.defaultMarker = true;\n element = DOM.create('div') as HTMLDivElement;\n this.markerOption.element = element;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'display', 'block');\n svg.setAttributeNS(null, 'height', '48px');\n svg.setAttributeNS(null, 'width', '48px');\n svg.setAttributeNS(null, 'viewBox', '0 0 1024 1024');\n\n const path = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'path',\n );\n path.setAttributeNS(\n null,\n 'd',\n 'M512 490.666667C453.12 490.666667 405.333333 442.88 405.333333 384 405.333333 325.12 453.12 277.333333 512 277.333333 570.88 277.333333 618.666667 325.12 618.666667 384 618.666667 442.88 570.88 490.666667 512 490.666667M512 85.333333C346.88 85.333333 213.333333 218.88 213.333333 384 213.333333 608 512 938.666667 512 938.666667 512 938.666667 810.666667 608 810.666667 384 810.666667 218.88 677.12 85.333333 512 85.333333Z',\n );\n path.setAttributeNS(null, 'fill', color);\n svg.appendChild(path);\n element.appendChild(svg);\n }\n DOM.addClass(element, 'l7-marker');\n Object.keys(this.markerOption.style || {}).forEach(\n // @ts-ignore\n (key: keyof CSSStyleDeclaration) => {\n const value =\n this.markerOption?.style && (this.markerOption?.style[key] as string);\n if (element) {\n // @ts-ignore\n (element.style as CSSStyleDeclaration)[key] = value;\n }\n },\n );\n\n element.addEventListener('click', (e: MouseEvent) => {\n this.onMapClick(e);\n });\n element.addEventListener('click', this.eventHandle);\n applyAnchorClass(element, anchor, 'marker');\n }\n private registerMarkerEvent(element: HTMLElement) {\n element.addEventListener('mousemove', this.eventHandle);\n element.addEventListener('click', this.eventHandle);\n element.addEventListener('mousedown', this.eventHandle);\n element.addEventListener('mouseup', this.eventHandle);\n element.addEventListener('dblclick', this.eventHandle);\n element.addEventListener('contextmenu', this.eventHandle);\n element.addEventListener('mouseover', this.eventHandle);\n element.addEventListener('mouseout', this.eventHandle);\n }\n private unRegisterMarkerEvent() {\n const element = this.getElement();\n element.removeEventListener('mousemove', this.eventHandle);\n element.removeEventListener('click', this.eventHandle);\n element.removeEventListener('mousedown', this.eventHandle);\n element.removeEventListener('mouseup', this.eventHandle);\n element.removeEventListener('dblclick', this.eventHandle);\n element.removeEventListener('contextmenu', this.eventHandle);\n element.removeEventListener('mouseover', this.eventHandle);\n element.removeEventListener('mouseout', this.eventHandle);\n }\n\n private eventHandle = (e: MouseEvent) => {\n this.emit(e.type, {\n target: e,\n data: this.markerOption.extData,\n lngLat: this.lngLat,\n });\n };\n private addDragHandler(e: MouseEvent) {\n throw new Error('Method not implemented.');\n }\n\n private onUp(e: MouseEvent) {\n throw new Error('Method not implemented.');\n }\n}\n"],"file":"marker.js"}
1
+ {"version":3,"sources":["../src/marker.ts"],"names":["TYPES","anchorTranslate","anchorType","applyAnchorClass","bindAll","DOM","EventEmitter","Marker","option","e","emit","type","target","data","markerOption","extData","lngLat","getDefault","init","element","undefined","anchor","BOTTOM","offsets","color","draggable","scene","mapsService","get","IMapService","sceneSerive","ISceneService","getMarkerContainer","appendChild","registerMarkerEvent","on","update","added","off","onMapClick","addDragHandler","onUp","unRegisterMarkerEvent","removeAllListeners","remove","popup","Array","isArray","lng","lat","setLnglat","el","once","setElement","openPopup","isOpen","addTo","closePopup","Error","updatePosition","setTransform","togglePopup","bounds","getBounds","pos","lngLatToContainer","style","display","whiteSpace","container","getContainer","containerWidth","containerHeight","scrollWidth","scrollHeight","Math","abs","x","newPos","y","left","top","defaultMarker","create","svg","document","createElementNS","setAttributeNS","path","addClass","Object","keys","forEach","key","value","addEventListener","eventHandle","getElement","removeEventListener"],"mappings":"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","sourcesContent":["import {\n ILngLat,\n IMapService,\n IMarkerOption,\n IPoint,\n IPopup,\n ISceneService,\n TYPES,\n} from '@antv/l7-core';\nimport {\n anchorTranslate,\n anchorType,\n applyAnchorClass,\n bindAll,\n DOM,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\n\n// marker 支持 dragger 未完成\nexport default class Marker extends EventEmitter {\n private markerOption: IMarkerOption;\n private defaultMarker: boolean;\n private popup: IPopup;\n private mapsService: IMapService<unknown>;\n private sceneSerive: ISceneService;\n private lngLat: ILngLat;\n private scene: Container;\n private added: boolean = false;\n constructor(option?: Partial<IMarkerOption>) {\n super();\n this.markerOption = {\n ...this.getDefault(),\n ...option,\n };\n bindAll(['update', 'onMove', 'onUp', 'addDragHandler', 'onMapClick'], this);\n this.init();\n }\n\n public getDefault() {\n return {\n element: undefined, // DOM element\n anchor: anchorType.BOTTOM,\n offsets: [0, 0],\n color: '#5B8FF9',\n draggable: false,\n };\n }\n\n public addTo(scene: Container) {\n // this.remove();\n this.scene = scene;\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n this.sceneSerive = scene.get<ISceneService>(TYPES.ISceneService);\n const { element, draggable } = this.markerOption;\n // this.sceneSerive.getSceneContainer().appendChild(element as HTMLElement);\n this.mapsService.getMarkerContainer().appendChild(element as HTMLElement);\n this.registerMarkerEvent(element as HTMLElement);\n this.mapsService.on('camerachange', this.update); // 注册高德1.x 的地图事件监听\n this.mapsService.on('viewchange', this.update); // 注册高德2.0 的地图事件监听\n this.update();\n this.added = true;\n this.emit('added');\n return this;\n }\n\n public remove() {\n if (this.mapsService) {\n this.mapsService.off('click', this.onMapClick);\n this.mapsService.off('move', this.update);\n this.mapsService.off('moveend', this.update);\n this.mapsService.off('mousedown', this.addDragHandler);\n this.mapsService.off('touchstart', this.addDragHandler);\n this.mapsService.off('mouseup', this.onUp);\n this.mapsService.off('touchend', this.onUp);\n }\n this.unRegisterMarkerEvent();\n this.removeAllListeners();\n const { element } = this.markerOption;\n if (element) {\n DOM.remove(element);\n }\n if (this.popup) {\n this.popup.remove();\n }\n return this;\n }\n\n public setLnglat(lngLat: ILngLat | IPoint) {\n this.lngLat = lngLat as ILngLat;\n if (Array.isArray(lngLat)) {\n this.lngLat = {\n lng: lngLat[0],\n lat: lngLat[1],\n };\n }\n\n if (this.popup) {\n this.popup.setLnglat(this.lngLat);\n }\n this.update();\n return this;\n }\n\n public getLnglat(): ILngLat {\n return this.lngLat;\n }\n\n public getElement(): HTMLElement {\n return this.markerOption.element as HTMLElement;\n }\n\n public setElement(el: HTMLElement): this {\n if (!this.added) {\n this.once('added', () => {\n this.setElement(el);\n });\n return this;\n }\n const { element } = this.markerOption;\n if (element) {\n DOM.remove(element);\n }\n this.markerOption.element = el;\n this.init();\n this.mapsService.getMarkerContainer().appendChild(el as HTMLElement);\n this.registerMarkerEvent(el as HTMLElement);\n this.update();\n return this;\n }\n\n public openPopup(): this {\n if (!this.added) {\n this.once('added', () => {\n this.openPopup();\n });\n return this;\n }\n const popup = this.popup;\n if (!popup) {\n return this;\n }\n if (!popup.isOpen()) {\n popup.addTo(this.scene);\n }\n return this;\n }\n\n public closePopup(): this {\n if (!this.added) {\n this.once('added', () => {\n this.closePopup();\n });\n }\n const popup = this.popup;\n if (popup) {\n popup.remove();\n }\n return this;\n }\n\n public setPopup(popup: IPopup) {\n this.popup = popup;\n if (this.lngLat) {\n this.popup.setLnglat(this.lngLat);\n }\n return this;\n }\n\n public togglePopup() {\n const popup = this.popup;\n if (!popup) {\n return this;\n } else if (popup.isOpen()) {\n popup.remove();\n } else {\n popup.addTo(this.scene);\n }\n return this;\n }\n\n public getPopup() {\n return this.popup;\n }\n\n public getOffset(): number[] {\n return this.markerOption.offsets;\n }\n\n public setDraggable(draggable: boolean) {\n throw new Error('Method not implemented.');\n }\n\n public isDraggable() {\n return this.markerOption.draggable;\n }\n\n public getExtData() {\n return this.markerOption.extData;\n }\n\n public setExtData(data: any) {\n this.markerOption.extData = data;\n }\n\n private update() {\n if (!this.mapsService) {\n return;\n }\n const { element, anchor } = this.markerOption;\n this.updatePosition();\n DOM.setTransform(element as HTMLElement, `${anchorTranslate[anchor]}`);\n }\n\n private onMapClick(e: MouseEvent) {\n const { element } = this.markerOption;\n if (this.popup && element) {\n this.togglePopup();\n }\n }\n\n private updatePosition() {\n if (!this.mapsService) {\n return;\n }\n const { element, offsets } = this.markerOption;\n const { lng, lat } = this.lngLat;\n const bounds = this.mapsService.getBounds();\n const pos = this.mapsService.lngLatToContainer([lng, lat]);\n\n if (element) {\n element.style.display = 'block';\n element.style.whiteSpace = 'nowrap';\n const container = this.mapsService.getContainer();\n let containerWidth = 0;\n let containerHeight = 0;\n if (container) {\n containerWidth = container.scrollWidth;\n containerHeight = container.scrollHeight;\n }\n // 当前可视区域包含跨日界线\n if (Math.abs(bounds[0][0]) > 180 || Math.abs(bounds[1][0]) > 180) {\n if (pos.x > containerWidth) {\n // 日界线右侧点左移\n const newPos = this.mapsService.lngLatToContainer([lng - 360, lat]);\n pos.x = newPos.x;\n }\n if (pos.x < 0) {\n // 日界线左侧点右移\n const newPos = this.mapsService.lngLatToContainer([lng + 360, lat]);\n pos.x = newPos.x;\n }\n }\n // 不在当前可视区域内隐藏点\n if (\n pos.x > containerWidth ||\n pos.x < 0 ||\n pos.y > containerHeight ||\n pos.y < 0\n ) {\n element.style.display = 'none';\n }\n element.style.left = pos.x + offsets[0] + 'px';\n element.style.top = pos.y - offsets[1] + 'px';\n }\n }\n\n private init() {\n let { element } = this.markerOption;\n const { color, anchor } = this.markerOption;\n if (!element) {\n this.defaultMarker = true;\n element = DOM.create('div') as HTMLDivElement;\n this.markerOption.element = element;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'display', 'block');\n svg.setAttributeNS(null, 'height', '48px');\n svg.setAttributeNS(null, 'width', '48px');\n svg.setAttributeNS(null, 'viewBox', '0 0 1024 1024');\n\n const path = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'path',\n );\n path.setAttributeNS(\n null,\n 'd',\n 'M512 490.666667C453.12 490.666667 405.333333 442.88 405.333333 384 405.333333 325.12 453.12 277.333333 512 277.333333 570.88 277.333333 618.666667 325.12 618.666667 384 618.666667 442.88 570.88 490.666667 512 490.666667M512 85.333333C346.88 85.333333 213.333333 218.88 213.333333 384 213.333333 608 512 938.666667 512 938.666667 512 938.666667 810.666667 608 810.666667 384 810.666667 218.88 677.12 85.333333 512 85.333333Z',\n );\n path.setAttributeNS(null, 'fill', color);\n svg.appendChild(path);\n element.appendChild(svg);\n }\n DOM.addClass(element, 'l7-marker');\n Object.keys(this.markerOption.style || {}).forEach(\n // @ts-ignore\n (key: keyof CSSStyleDeclaration) => {\n const value =\n this.markerOption?.style && (this.markerOption?.style[key] as string);\n if (element) {\n // @ts-ignore\n (element.style as CSSStyleDeclaration)[key] = value;\n }\n },\n );\n\n element.addEventListener('click', (e: MouseEvent) => {\n this.onMapClick(e);\n });\n element.addEventListener('click', this.eventHandle);\n applyAnchorClass(element, anchor, 'marker');\n }\n private registerMarkerEvent(element: HTMLElement) {\n element.addEventListener('mousemove', this.eventHandle);\n element.addEventListener('click', this.eventHandle);\n element.addEventListener('mousedown', this.eventHandle);\n element.addEventListener('mouseup', this.eventHandle);\n element.addEventListener('dblclick', this.eventHandle);\n element.addEventListener('contextmenu', this.eventHandle);\n element.addEventListener('mouseover', this.eventHandle);\n element.addEventListener('mouseout', this.eventHandle);\n }\n private unRegisterMarkerEvent() {\n const element = this.getElement();\n element.removeEventListener('mousemove', this.eventHandle);\n element.removeEventListener('click', this.eventHandle);\n element.removeEventListener('mousedown', this.eventHandle);\n element.removeEventListener('mouseup', this.eventHandle);\n element.removeEventListener('dblclick', this.eventHandle);\n element.removeEventListener('contextmenu', this.eventHandle);\n element.removeEventListener('mouseover', this.eventHandle);\n element.removeEventListener('mouseout', this.eventHandle);\n }\n\n private eventHandle = (e: MouseEvent) => {\n this.emit(e.type, {\n target: e,\n data: this.markerOption.extData,\n lngLat: this.lngLat,\n });\n };\n private addDragHandler(e: MouseEvent) {\n throw new Error('Method not implemented.');\n }\n\n private onUp(e: MouseEvent) {\n throw new Error('Method not implemented.');\n }\n}\n"],"file":"marker.js"}
package/es/popup.js CHANGED
@@ -282,6 +282,8 @@ var Popup = function (_EventEmitter) {
282
282
  });
283
283
  });
284
284
  }
285
+
286
+ this.container.style.whiteSpace = 'nowrap';
285
287
  }
286
288
 
287
289
  if (maxWidth && this.container.style.maxWidth !== maxWidth) {
package/es/popup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/popup.ts"],"names":["TYPES","anchorTranslate","anchorType","applyAnchorClass","bindAll","DOM","EventEmitter","Popup","cfg","popupOption","getdefault","scene","mapsService","get","IMapService","sceneSerive","ISceneService","on","update","closeOnClick","timeoutInstance","setTimeout","onClickClose","emit","remove","addTo","html","frag","window","document","createDocumentFragment","temp","createElement","child","innerHTML","firstChild","appendChild","setDOMContent","lngLat","Array","isArray","lng","lat","text","createTextNode","maxWidth","htmlNode","createContent","content","removeDom","container","off","clearTimeout","create","closeButton","closeButtonOffsets","style","right","top","setAttribute","addEventListener","tagName","className","el","undefined","node","parentNode","removeChild","offsets","anchor","BOTTOM","stopPropagation","e","hasPosition","popupContainer","getMarkerContainer","creatDom","tip","split","forEach","name","classList","add","type","updatePosition","setTransform","pos","lngLatToContainer","left","x","y"],"mappings":"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","sourcesContent":["import {\n ILngLat,\n IMapService,\n IPoint,\n IPopup,\n IPopupOption,\n ISceneService,\n TYPES,\n} from '@antv/l7-core';\nimport {\n anchorTranslate,\n anchorType,\n applyAnchorClass,\n bindAll,\n DOM,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\n\n/** colse event */\n\nexport default class Popup extends EventEmitter implements IPopup {\n private popupOption: IPopupOption;\n private mapsService: IMapService<unknown>;\n private sceneSerive: ISceneService;\n private lngLat: ILngLat;\n private content: HTMLElement;\n private closeButton: HTMLElement;\n private timeoutInstance: any;\n private container: HTMLElement;\n private tip: HTMLElement;\n private scene: Container;\n\n constructor(cfg?: Partial<IPopupOption>) {\n super();\n this.popupOption = {\n ...this.getdefault(),\n ...cfg,\n };\n bindAll(['update', 'onClickClose', 'remove'], this);\n }\n\n public addTo(scene: Container) {\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n this.sceneSerive = scene.get<ISceneService>(TYPES.ISceneService);\n this.mapsService.on('camerachange', this.update);\n this.mapsService.on('viewchange', this.update);\n this.scene = scene;\n this.update();\n if (this.popupOption.closeOnClick) {\n this.timeoutInstance = setTimeout(() => {\n this.mapsService.on('click', this.onClickClose);\n }, 30);\n }\n this.emit('open');\n return this;\n }\n\n public close(): void {\n this.remove();\n }\n\n public open(): void {\n this.addTo(this.scene);\n }\n\n public setHTML(html: string) {\n const frag = window.document.createDocumentFragment();\n const temp = window.document.createElement('body');\n let child: ChildNode | null;\n temp.innerHTML = html;\n while (true) {\n child = temp.firstChild;\n if (!child) {\n break;\n }\n frag.appendChild(child);\n }\n\n return this.setDOMContent(frag);\n }\n\n public setLnglat(lngLat: ILngLat | number[]): this {\n this.lngLat = lngLat as ILngLat;\n if (Array.isArray(lngLat)) {\n this.lngLat = {\n lng: lngLat[0],\n lat: lngLat[1],\n };\n }\n if (this.mapsService) {\n this.mapsService.on('camerachange', this.update);\n this.mapsService.on('viewchange', this.update);\n }\n this.update();\n return this;\n }\n public getLnglat(): ILngLat {\n return this.lngLat;\n }\n public setText(text: string) {\n return this.setDOMContent(window.document.createTextNode(text));\n }\n\n public setMaxWidth(maxWidth: string): this {\n this.popupOption.maxWidth = maxWidth;\n this.update();\n return this;\n }\n\n public setDOMContent(htmlNode: ChildNode | DocumentFragment) {\n this.createContent();\n this.content.appendChild(htmlNode);\n this.update();\n return this;\n }\n\n // 移除popup\n public remove() {\n if (this.content) {\n this.removeDom(this.content);\n }\n\n if (this.container) {\n this.removeDom(this.container);\n // @ts-ignore\n delete this.container;\n }\n if (this.mapsService) {\n // TODO: mapbox AMap 事件同步\n this.mapsService.off('camerachange', this.update);\n this.mapsService.off('viewchange', this.update);\n this.mapsService.off('click', this.onClickClose);\n // @ts-ignore\n delete this.mapsService;\n }\n clearTimeout(this.timeoutInstance);\n this.emit('close');\n return this;\n }\n public isOpen() {\n return !!this.mapsService;\n }\n\n private createContent() {\n if (this.content) {\n DOM.remove(this.content);\n }\n this.content = DOM.create('div', 'l7-popup-content', this.container);\n if (this.popupOption.closeButton) {\n this.closeButton = DOM.create(\n 'button',\n 'l7-popup-close-button',\n this.content,\n );\n\n if (this.popupOption.closeButtonOffsets) {\n // 关闭按钮的偏移\n this.closeButton.style.right =\n this.popupOption.closeButtonOffsets[0] + 'px';\n this.closeButton.style.top =\n this.popupOption.closeButtonOffsets[1] + 'px';\n }\n\n // this.closeButton.type = 'button';\n this.closeButton.setAttribute('aria-label', 'Close popup');\n this.closeButton.innerHTML = '&#215;';\n this.closeButton.addEventListener('click', this.onClickClose);\n }\n }\n\n private creatDom(tagName: string, className: string, container: HTMLElement) {\n const el = window.document.createElement(tagName);\n if (className !== undefined) {\n el.className = className;\n }\n if (container) {\n container.appendChild(el);\n }\n return el;\n }\n\n private removeDom(node: ChildNode) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n\n private getdefault() {\n return {\n closeButton: true,\n closeOnClick: true,\n maxWidth: '240px',\n offsets: [0, 0],\n anchor: anchorType.BOTTOM,\n className: '',\n stopPropagation: true,\n };\n }\n\n private onClickClose(e: Event) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n this.remove();\n }\n\n private update() {\n const hasPosition = this.lngLat;\n const { className, maxWidth, anchor } = this.popupOption;\n if (!this.mapsService || !hasPosition || !this.content) {\n return;\n }\n const popupContainer = this.mapsService.getMarkerContainer();\n if (!this.container && popupContainer) {\n this.container = this.creatDom(\n 'div',\n 'l7-popup',\n popupContainer as HTMLElement,\n );\n\n this.tip = this.creatDom('div', 'l7-popup-tip', this.container);\n this.container.appendChild(this.content);\n if (className) {\n className\n .split(' ')\n .forEach((name) => this.container.classList.add(name));\n }\n\n // 高德地图需要阻止事件冒泡 // 测试mapbox 地图不需要添加\n const { stopPropagation } = this.popupOption;\n if (stopPropagation) {\n ['mousemove', 'mousedown', 'mouseup', 'click', 'dblclick'].forEach(\n (type) => {\n this.container.addEventListener(type, (e) => {\n e.stopPropagation();\n });\n },\n );\n }\n }\n if (maxWidth && this.container.style.maxWidth !== maxWidth) {\n this.container.style.maxWidth = maxWidth;\n }\n\n this.updatePosition();\n DOM.setTransform(this.container, `${anchorTranslate[anchor]}`);\n applyAnchorClass(this.container, anchor, 'popup');\n }\n\n private updatePosition() {\n if (!this.mapsService) {\n return;\n }\n const { lng, lat } = this.lngLat;\n const { offsets } = this.popupOption;\n const pos = this.mapsService.lngLatToContainer([lng, lat]);\n this.container.style.left = pos.x + offsets[0] + 'px';\n this.container.style.top = pos.y - offsets[1] + 'px';\n }\n}\n"],"file":"popup.js"}
1
+ {"version":3,"sources":["../src/popup.ts"],"names":["TYPES","anchorTranslate","anchorType","applyAnchorClass","bindAll","DOM","EventEmitter","Popup","cfg","popupOption","getdefault","scene","mapsService","get","IMapService","sceneSerive","ISceneService","on","update","closeOnClick","timeoutInstance","setTimeout","onClickClose","emit","remove","addTo","html","frag","window","document","createDocumentFragment","temp","createElement","child","innerHTML","firstChild","appendChild","setDOMContent","lngLat","Array","isArray","lng","lat","text","createTextNode","maxWidth","htmlNode","createContent","content","removeDom","container","off","clearTimeout","create","closeButton","closeButtonOffsets","style","right","top","setAttribute","addEventListener","tagName","className","el","undefined","node","parentNode","removeChild","offsets","anchor","BOTTOM","stopPropagation","e","hasPosition","popupContainer","getMarkerContainer","creatDom","tip","split","forEach","name","classList","add","type","whiteSpace","updatePosition","setTransform","pos","lngLatToContainer","left","x","y"],"mappings":"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","sourcesContent":["import {\n ILngLat,\n IMapService,\n IPoint,\n IPopup,\n IPopupOption,\n ISceneService,\n TYPES,\n} from '@antv/l7-core';\nimport {\n anchorTranslate,\n anchorType,\n applyAnchorClass,\n bindAll,\n DOM,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\n\n/** colse event */\n\nexport default class Popup extends EventEmitter implements IPopup {\n private popupOption: IPopupOption;\n private mapsService: IMapService<unknown>;\n private sceneSerive: ISceneService;\n private lngLat: ILngLat;\n private content: HTMLElement;\n private closeButton: HTMLElement;\n private timeoutInstance: any;\n private container: HTMLElement;\n private tip: HTMLElement;\n private scene: Container;\n\n constructor(cfg?: Partial<IPopupOption>) {\n super();\n this.popupOption = {\n ...this.getdefault(),\n ...cfg,\n };\n bindAll(['update', 'onClickClose', 'remove'], this);\n }\n\n public addTo(scene: Container) {\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n this.sceneSerive = scene.get<ISceneService>(TYPES.ISceneService);\n this.mapsService.on('camerachange', this.update);\n this.mapsService.on('viewchange', this.update);\n this.scene = scene;\n this.update();\n if (this.popupOption.closeOnClick) {\n this.timeoutInstance = setTimeout(() => {\n this.mapsService.on('click', this.onClickClose);\n }, 30);\n }\n this.emit('open');\n return this;\n }\n\n public close(): void {\n this.remove();\n }\n\n public open(): void {\n this.addTo(this.scene);\n }\n\n public setHTML(html: string) {\n const frag = window.document.createDocumentFragment();\n const temp = window.document.createElement('body');\n let child: ChildNode | null;\n temp.innerHTML = html;\n while (true) {\n child = temp.firstChild;\n if (!child) {\n break;\n }\n frag.appendChild(child);\n }\n\n return this.setDOMContent(frag);\n }\n\n public setLnglat(lngLat: ILngLat | number[]): this {\n this.lngLat = lngLat as ILngLat;\n if (Array.isArray(lngLat)) {\n this.lngLat = {\n lng: lngLat[0],\n lat: lngLat[1],\n };\n }\n if (this.mapsService) {\n this.mapsService.on('camerachange', this.update);\n this.mapsService.on('viewchange', this.update);\n }\n this.update();\n return this;\n }\n public getLnglat(): ILngLat {\n return this.lngLat;\n }\n public setText(text: string) {\n return this.setDOMContent(window.document.createTextNode(text));\n }\n\n public setMaxWidth(maxWidth: string): this {\n this.popupOption.maxWidth = maxWidth;\n this.update();\n return this;\n }\n\n public setDOMContent(htmlNode: ChildNode | DocumentFragment) {\n this.createContent();\n this.content.appendChild(htmlNode);\n this.update();\n return this;\n }\n\n // 移除popup\n public remove() {\n if (this.content) {\n this.removeDom(this.content);\n }\n\n if (this.container) {\n this.removeDom(this.container);\n // @ts-ignore\n delete this.container;\n }\n if (this.mapsService) {\n // TODO: mapbox AMap 事件同步\n this.mapsService.off('camerachange', this.update);\n this.mapsService.off('viewchange', this.update);\n this.mapsService.off('click', this.onClickClose);\n // @ts-ignore\n delete this.mapsService;\n }\n clearTimeout(this.timeoutInstance);\n this.emit('close');\n return this;\n }\n public isOpen() {\n return !!this.mapsService;\n }\n\n private createContent() {\n if (this.content) {\n DOM.remove(this.content);\n }\n this.content = DOM.create('div', 'l7-popup-content', this.container);\n if (this.popupOption.closeButton) {\n this.closeButton = DOM.create(\n 'button',\n 'l7-popup-close-button',\n this.content,\n );\n\n if (this.popupOption.closeButtonOffsets) {\n // 关闭按钮的偏移\n this.closeButton.style.right =\n this.popupOption.closeButtonOffsets[0] + 'px';\n this.closeButton.style.top =\n this.popupOption.closeButtonOffsets[1] + 'px';\n }\n\n // this.closeButton.type = 'button';\n this.closeButton.setAttribute('aria-label', 'Close popup');\n this.closeButton.innerHTML = '&#215;';\n this.closeButton.addEventListener('click', this.onClickClose);\n }\n }\n\n private creatDom(tagName: string, className: string, container: HTMLElement) {\n const el = window.document.createElement(tagName);\n if (className !== undefined) {\n el.className = className;\n }\n if (container) {\n container.appendChild(el);\n }\n return el;\n }\n\n private removeDom(node: ChildNode) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n\n private getdefault() {\n return {\n closeButton: true,\n closeOnClick: true,\n maxWidth: '240px',\n offsets: [0, 0],\n anchor: anchorType.BOTTOM,\n className: '',\n stopPropagation: true,\n };\n }\n\n private onClickClose(e: Event) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n this.remove();\n }\n\n private update() {\n const hasPosition = this.lngLat;\n const { className, maxWidth, anchor } = this.popupOption;\n if (!this.mapsService || !hasPosition || !this.content) {\n return;\n }\n const popupContainer = this.mapsService.getMarkerContainer();\n if (!this.container && popupContainer) {\n this.container = this.creatDom(\n 'div',\n 'l7-popup',\n popupContainer as HTMLElement,\n );\n\n this.tip = this.creatDom('div', 'l7-popup-tip', this.container);\n this.container.appendChild(this.content);\n if (className) {\n className\n .split(' ')\n .forEach((name) => this.container.classList.add(name));\n }\n\n // 高德地图需要阻止事件冒泡 // 测试mapbox 地图不需要添加\n const { stopPropagation } = this.popupOption;\n if (stopPropagation) {\n ['mousemove', 'mousedown', 'mouseup', 'click', 'dblclick'].forEach(\n (type) => {\n this.container.addEventListener(type, (e) => {\n e.stopPropagation();\n });\n },\n );\n }\n\n this.container.style.whiteSpace = 'nowrap';\n }\n if (maxWidth && this.container.style.maxWidth !== maxWidth) {\n this.container.style.maxWidth = maxWidth;\n }\n\n this.updatePosition();\n DOM.setTransform(this.container, `${anchorTranslate[anchor]}`);\n applyAnchorClass(this.container, anchor, 'popup');\n }\n\n private updatePosition() {\n if (!this.mapsService) {\n return;\n }\n const { lng, lat } = this.lngLat;\n const { offsets } = this.popupOption;\n const pos = this.mapsService.lngLatToContainer([lng, lat]);\n this.container.style.left = pos.x + offsets[0] + 'px';\n this.container.style.top = pos.y - offsets[1] + 'px';\n }\n}\n"],"file":"popup.js"}
package/lib/marker.js CHANGED
@@ -318,6 +318,7 @@ var Marker = function (_EventEmitter) {
318
318
 
319
319
  if (element) {
320
320
  element.style.display = 'block';
321
+ element.style.whiteSpace = 'nowrap';
321
322
  var container = this.mapsService.getContainer();
322
323
  var containerWidth = 0;
323
324
  var containerHeight = 0;
package/lib/marker.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker.ts"],"names":["Marker","option","e","emit","type","target","data","markerOption","extData","lngLat","getDefault","init","element","undefined","anchor","anchorType","BOTTOM","offsets","color","draggable","scene","mapsService","get","TYPES","IMapService","sceneSerive","ISceneService","getMarkerContainer","appendChild","registerMarkerEvent","on","update","added","off","onMapClick","addDragHandler","onUp","unRegisterMarkerEvent","removeAllListeners","DOM","remove","popup","Array","isArray","lng","lat","setLnglat","el","once","setElement","openPopup","isOpen","addTo","closePopup","Error","updatePosition","setTransform","anchorTranslate","togglePopup","bounds","getBounds","pos","lngLatToContainer","style","display","container","getContainer","containerWidth","containerHeight","scrollWidth","scrollHeight","Math","abs","x","newPos","y","left","top","defaultMarker","create","svg","document","createElementNS","setAttributeNS","path","addClass","Object","keys","forEach","key","value","addEventListener","eventHandle","getElement","removeEventListener","EventEmitter"],"mappings":"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","sourcesContent":["import {\n ILngLat,\n IMapService,\n IMarkerOption,\n IPoint,\n IPopup,\n ISceneService,\n TYPES,\n} from '@antv/l7-core';\nimport {\n anchorTranslate,\n anchorType,\n applyAnchorClass,\n bindAll,\n DOM,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\n\n// marker 支持 dragger 未完成\nexport default class Marker extends EventEmitter {\n private markerOption: IMarkerOption;\n private defaultMarker: boolean;\n private popup: IPopup;\n private mapsService: IMapService<unknown>;\n private sceneSerive: ISceneService;\n private lngLat: ILngLat;\n private scene: Container;\n private added: boolean = false;\n constructor(option?: Partial<IMarkerOption>) {\n super();\n this.markerOption = {\n ...this.getDefault(),\n ...option,\n };\n bindAll(['update', 'onMove', 'onUp', 'addDragHandler', 'onMapClick'], this);\n this.init();\n }\n\n public getDefault() {\n return {\n element: undefined, // DOM element\n anchor: anchorType.BOTTOM,\n offsets: [0, 0],\n color: '#5B8FF9',\n draggable: false,\n };\n }\n\n public addTo(scene: Container) {\n // this.remove();\n this.scene = scene;\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n this.sceneSerive = scene.get<ISceneService>(TYPES.ISceneService);\n const { element, draggable } = this.markerOption;\n // this.sceneSerive.getSceneContainer().appendChild(element as HTMLElement);\n this.mapsService.getMarkerContainer().appendChild(element as HTMLElement);\n this.registerMarkerEvent(element as HTMLElement);\n this.mapsService.on('camerachange', this.update); // 注册高德1.x 的地图事件监听\n this.mapsService.on('viewchange', this.update); // 注册高德2.0 的地图事件监听\n this.update();\n this.added = true;\n this.emit('added');\n return this;\n }\n\n public remove() {\n if (this.mapsService) {\n this.mapsService.off('click', this.onMapClick);\n this.mapsService.off('move', this.update);\n this.mapsService.off('moveend', this.update);\n this.mapsService.off('mousedown', this.addDragHandler);\n this.mapsService.off('touchstart', this.addDragHandler);\n this.mapsService.off('mouseup', this.onUp);\n this.mapsService.off('touchend', this.onUp);\n }\n this.unRegisterMarkerEvent();\n this.removeAllListeners();\n const { element } = this.markerOption;\n if (element) {\n DOM.remove(element);\n }\n if (this.popup) {\n this.popup.remove();\n }\n return this;\n }\n\n public setLnglat(lngLat: ILngLat | IPoint) {\n this.lngLat = lngLat as ILngLat;\n if (Array.isArray(lngLat)) {\n this.lngLat = {\n lng: lngLat[0],\n lat: lngLat[1],\n };\n }\n\n if (this.popup) {\n this.popup.setLnglat(this.lngLat);\n }\n this.update();\n return this;\n }\n\n public getLnglat(): ILngLat {\n return this.lngLat;\n }\n\n public getElement(): HTMLElement {\n return this.markerOption.element as HTMLElement;\n }\n\n public setElement(el: HTMLElement): this {\n if (!this.added) {\n this.once('added', () => {\n this.setElement(el);\n });\n return this;\n }\n const { element } = this.markerOption;\n if (element) {\n DOM.remove(element);\n }\n this.markerOption.element = el;\n this.init();\n this.mapsService.getMarkerContainer().appendChild(el as HTMLElement);\n this.registerMarkerEvent(el as HTMLElement);\n this.update();\n return this;\n }\n\n public openPopup(): this {\n if (!this.added) {\n this.once('added', () => {\n this.openPopup();\n });\n return this;\n }\n const popup = this.popup;\n if (!popup) {\n return this;\n }\n if (!popup.isOpen()) {\n popup.addTo(this.scene);\n }\n return this;\n }\n\n public closePopup(): this {\n if (!this.added) {\n this.once('added', () => {\n this.closePopup();\n });\n }\n const popup = this.popup;\n if (popup) {\n popup.remove();\n }\n return this;\n }\n\n public setPopup(popup: IPopup) {\n this.popup = popup;\n if (this.lngLat) {\n this.popup.setLnglat(this.lngLat);\n }\n return this;\n }\n\n public togglePopup() {\n const popup = this.popup;\n if (!popup) {\n return this;\n } else if (popup.isOpen()) {\n popup.remove();\n } else {\n popup.addTo(this.scene);\n }\n return this;\n }\n\n public getPopup() {\n return this.popup;\n }\n\n public getOffset(): number[] {\n return this.markerOption.offsets;\n }\n\n public setDraggable(draggable: boolean) {\n throw new Error('Method not implemented.');\n }\n\n public isDraggable() {\n return this.markerOption.draggable;\n }\n\n public getExtData() {\n return this.markerOption.extData;\n }\n\n public setExtData(data: any) {\n this.markerOption.extData = data;\n }\n\n private update() {\n if (!this.mapsService) {\n return;\n }\n const { element, anchor } = this.markerOption;\n this.updatePosition();\n DOM.setTransform(element as HTMLElement, `${anchorTranslate[anchor]}`);\n }\n\n private onMapClick(e: MouseEvent) {\n const { element } = this.markerOption;\n if (this.popup && element) {\n this.togglePopup();\n }\n }\n\n private updatePosition() {\n if (!this.mapsService) {\n return;\n }\n const { element, offsets } = this.markerOption;\n const { lng, lat } = this.lngLat;\n const bounds = this.mapsService.getBounds();\n const pos = this.mapsService.lngLatToContainer([lng, lat]);\n\n if (element) {\n element.style.display = 'block';\n const container = this.mapsService.getContainer();\n let containerWidth = 0;\n let containerHeight = 0;\n if (container) {\n containerWidth = container.scrollWidth;\n containerHeight = container.scrollHeight;\n }\n // 当前可视区域包含跨日界线\n if (Math.abs(bounds[0][0]) > 180 || Math.abs(bounds[1][0]) > 180) {\n if (pos.x > containerWidth) {\n // 日界线右侧点左移\n const newPos = this.mapsService.lngLatToContainer([lng - 360, lat]);\n pos.x = newPos.x;\n }\n if (pos.x < 0) {\n // 日界线左侧点右移\n const newPos = this.mapsService.lngLatToContainer([lng + 360, lat]);\n pos.x = newPos.x;\n }\n }\n // 不在当前可视区域内隐藏点\n if (\n pos.x > containerWidth ||\n pos.x < 0 ||\n pos.y > containerHeight ||\n pos.y < 0\n ) {\n element.style.display = 'none';\n }\n element.style.left = pos.x + offsets[0] + 'px';\n element.style.top = pos.y - offsets[1] + 'px';\n }\n }\n\n private init() {\n let { element } = this.markerOption;\n const { color, anchor } = this.markerOption;\n if (!element) {\n this.defaultMarker = true;\n element = DOM.create('div') as HTMLDivElement;\n this.markerOption.element = element;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'display', 'block');\n svg.setAttributeNS(null, 'height', '48px');\n svg.setAttributeNS(null, 'width', '48px');\n svg.setAttributeNS(null, 'viewBox', '0 0 1024 1024');\n\n const path = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'path',\n );\n path.setAttributeNS(\n null,\n 'd',\n 'M512 490.666667C453.12 490.666667 405.333333 442.88 405.333333 384 405.333333 325.12 453.12 277.333333 512 277.333333 570.88 277.333333 618.666667 325.12 618.666667 384 618.666667 442.88 570.88 490.666667 512 490.666667M512 85.333333C346.88 85.333333 213.333333 218.88 213.333333 384 213.333333 608 512 938.666667 512 938.666667 512 938.666667 810.666667 608 810.666667 384 810.666667 218.88 677.12 85.333333 512 85.333333Z',\n );\n path.setAttributeNS(null, 'fill', color);\n svg.appendChild(path);\n element.appendChild(svg);\n }\n DOM.addClass(element, 'l7-marker');\n Object.keys(this.markerOption.style || {}).forEach(\n // @ts-ignore\n (key: keyof CSSStyleDeclaration) => {\n const value =\n this.markerOption?.style && (this.markerOption?.style[key] as string);\n if (element) {\n // @ts-ignore\n (element.style as CSSStyleDeclaration)[key] = value;\n }\n },\n );\n\n element.addEventListener('click', (e: MouseEvent) => {\n this.onMapClick(e);\n });\n element.addEventListener('click', this.eventHandle);\n applyAnchorClass(element, anchor, 'marker');\n }\n private registerMarkerEvent(element: HTMLElement) {\n element.addEventListener('mousemove', this.eventHandle);\n element.addEventListener('click', this.eventHandle);\n element.addEventListener('mousedown', this.eventHandle);\n element.addEventListener('mouseup', this.eventHandle);\n element.addEventListener('dblclick', this.eventHandle);\n element.addEventListener('contextmenu', this.eventHandle);\n element.addEventListener('mouseover', this.eventHandle);\n element.addEventListener('mouseout', this.eventHandle);\n }\n private unRegisterMarkerEvent() {\n const element = this.getElement();\n element.removeEventListener('mousemove', this.eventHandle);\n element.removeEventListener('click', this.eventHandle);\n element.removeEventListener('mousedown', this.eventHandle);\n element.removeEventListener('mouseup', this.eventHandle);\n element.removeEventListener('dblclick', this.eventHandle);\n element.removeEventListener('contextmenu', this.eventHandle);\n element.removeEventListener('mouseover', this.eventHandle);\n element.removeEventListener('mouseout', this.eventHandle);\n }\n\n private eventHandle = (e: MouseEvent) => {\n this.emit(e.type, {\n target: e,\n data: this.markerOption.extData,\n lngLat: this.lngLat,\n });\n };\n private addDragHandler(e: MouseEvent) {\n throw new Error('Method not implemented.');\n }\n\n private onUp(e: MouseEvent) {\n throw new Error('Method not implemented.');\n }\n}\n"],"file":"marker.js"}
1
+ {"version":3,"sources":["../src/marker.ts"],"names":["Marker","option","e","emit","type","target","data","markerOption","extData","lngLat","getDefault","init","element","undefined","anchor","anchorType","BOTTOM","offsets","color","draggable","scene","mapsService","get","TYPES","IMapService","sceneSerive","ISceneService","getMarkerContainer","appendChild","registerMarkerEvent","on","update","added","off","onMapClick","addDragHandler","onUp","unRegisterMarkerEvent","removeAllListeners","DOM","remove","popup","Array","isArray","lng","lat","setLnglat","el","once","setElement","openPopup","isOpen","addTo","closePopup","Error","updatePosition","setTransform","anchorTranslate","togglePopup","bounds","getBounds","pos","lngLatToContainer","style","display","whiteSpace","container","getContainer","containerWidth","containerHeight","scrollWidth","scrollHeight","Math","abs","x","newPos","y","left","top","defaultMarker","create","svg","document","createElementNS","setAttributeNS","path","addClass","Object","keys","forEach","key","value","addEventListener","eventHandle","getElement","removeEventListener","EventEmitter"],"mappings":"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","sourcesContent":["import {\n ILngLat,\n IMapService,\n IMarkerOption,\n IPoint,\n IPopup,\n ISceneService,\n TYPES,\n} from '@antv/l7-core';\nimport {\n anchorTranslate,\n anchorType,\n applyAnchorClass,\n bindAll,\n DOM,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\n\n// marker 支持 dragger 未完成\nexport default class Marker extends EventEmitter {\n private markerOption: IMarkerOption;\n private defaultMarker: boolean;\n private popup: IPopup;\n private mapsService: IMapService<unknown>;\n private sceneSerive: ISceneService;\n private lngLat: ILngLat;\n private scene: Container;\n private added: boolean = false;\n constructor(option?: Partial<IMarkerOption>) {\n super();\n this.markerOption = {\n ...this.getDefault(),\n ...option,\n };\n bindAll(['update', 'onMove', 'onUp', 'addDragHandler', 'onMapClick'], this);\n this.init();\n }\n\n public getDefault() {\n return {\n element: undefined, // DOM element\n anchor: anchorType.BOTTOM,\n offsets: [0, 0],\n color: '#5B8FF9',\n draggable: false,\n };\n }\n\n public addTo(scene: Container) {\n // this.remove();\n this.scene = scene;\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n this.sceneSerive = scene.get<ISceneService>(TYPES.ISceneService);\n const { element, draggable } = this.markerOption;\n // this.sceneSerive.getSceneContainer().appendChild(element as HTMLElement);\n this.mapsService.getMarkerContainer().appendChild(element as HTMLElement);\n this.registerMarkerEvent(element as HTMLElement);\n this.mapsService.on('camerachange', this.update); // 注册高德1.x 的地图事件监听\n this.mapsService.on('viewchange', this.update); // 注册高德2.0 的地图事件监听\n this.update();\n this.added = true;\n this.emit('added');\n return this;\n }\n\n public remove() {\n if (this.mapsService) {\n this.mapsService.off('click', this.onMapClick);\n this.mapsService.off('move', this.update);\n this.mapsService.off('moveend', this.update);\n this.mapsService.off('mousedown', this.addDragHandler);\n this.mapsService.off('touchstart', this.addDragHandler);\n this.mapsService.off('mouseup', this.onUp);\n this.mapsService.off('touchend', this.onUp);\n }\n this.unRegisterMarkerEvent();\n this.removeAllListeners();\n const { element } = this.markerOption;\n if (element) {\n DOM.remove(element);\n }\n if (this.popup) {\n this.popup.remove();\n }\n return this;\n }\n\n public setLnglat(lngLat: ILngLat | IPoint) {\n this.lngLat = lngLat as ILngLat;\n if (Array.isArray(lngLat)) {\n this.lngLat = {\n lng: lngLat[0],\n lat: lngLat[1],\n };\n }\n\n if (this.popup) {\n this.popup.setLnglat(this.lngLat);\n }\n this.update();\n return this;\n }\n\n public getLnglat(): ILngLat {\n return this.lngLat;\n }\n\n public getElement(): HTMLElement {\n return this.markerOption.element as HTMLElement;\n }\n\n public setElement(el: HTMLElement): this {\n if (!this.added) {\n this.once('added', () => {\n this.setElement(el);\n });\n return this;\n }\n const { element } = this.markerOption;\n if (element) {\n DOM.remove(element);\n }\n this.markerOption.element = el;\n this.init();\n this.mapsService.getMarkerContainer().appendChild(el as HTMLElement);\n this.registerMarkerEvent(el as HTMLElement);\n this.update();\n return this;\n }\n\n public openPopup(): this {\n if (!this.added) {\n this.once('added', () => {\n this.openPopup();\n });\n return this;\n }\n const popup = this.popup;\n if (!popup) {\n return this;\n }\n if (!popup.isOpen()) {\n popup.addTo(this.scene);\n }\n return this;\n }\n\n public closePopup(): this {\n if (!this.added) {\n this.once('added', () => {\n this.closePopup();\n });\n }\n const popup = this.popup;\n if (popup) {\n popup.remove();\n }\n return this;\n }\n\n public setPopup(popup: IPopup) {\n this.popup = popup;\n if (this.lngLat) {\n this.popup.setLnglat(this.lngLat);\n }\n return this;\n }\n\n public togglePopup() {\n const popup = this.popup;\n if (!popup) {\n return this;\n } else if (popup.isOpen()) {\n popup.remove();\n } else {\n popup.addTo(this.scene);\n }\n return this;\n }\n\n public getPopup() {\n return this.popup;\n }\n\n public getOffset(): number[] {\n return this.markerOption.offsets;\n }\n\n public setDraggable(draggable: boolean) {\n throw new Error('Method not implemented.');\n }\n\n public isDraggable() {\n return this.markerOption.draggable;\n }\n\n public getExtData() {\n return this.markerOption.extData;\n }\n\n public setExtData(data: any) {\n this.markerOption.extData = data;\n }\n\n private update() {\n if (!this.mapsService) {\n return;\n }\n const { element, anchor } = this.markerOption;\n this.updatePosition();\n DOM.setTransform(element as HTMLElement, `${anchorTranslate[anchor]}`);\n }\n\n private onMapClick(e: MouseEvent) {\n const { element } = this.markerOption;\n if (this.popup && element) {\n this.togglePopup();\n }\n }\n\n private updatePosition() {\n if (!this.mapsService) {\n return;\n }\n const { element, offsets } = this.markerOption;\n const { lng, lat } = this.lngLat;\n const bounds = this.mapsService.getBounds();\n const pos = this.mapsService.lngLatToContainer([lng, lat]);\n\n if (element) {\n element.style.display = 'block';\n element.style.whiteSpace = 'nowrap';\n const container = this.mapsService.getContainer();\n let containerWidth = 0;\n let containerHeight = 0;\n if (container) {\n containerWidth = container.scrollWidth;\n containerHeight = container.scrollHeight;\n }\n // 当前可视区域包含跨日界线\n if (Math.abs(bounds[0][0]) > 180 || Math.abs(bounds[1][0]) > 180) {\n if (pos.x > containerWidth) {\n // 日界线右侧点左移\n const newPos = this.mapsService.lngLatToContainer([lng - 360, lat]);\n pos.x = newPos.x;\n }\n if (pos.x < 0) {\n // 日界线左侧点右移\n const newPos = this.mapsService.lngLatToContainer([lng + 360, lat]);\n pos.x = newPos.x;\n }\n }\n // 不在当前可视区域内隐藏点\n if (\n pos.x > containerWidth ||\n pos.x < 0 ||\n pos.y > containerHeight ||\n pos.y < 0\n ) {\n element.style.display = 'none';\n }\n element.style.left = pos.x + offsets[0] + 'px';\n element.style.top = pos.y - offsets[1] + 'px';\n }\n }\n\n private init() {\n let { element } = this.markerOption;\n const { color, anchor } = this.markerOption;\n if (!element) {\n this.defaultMarker = true;\n element = DOM.create('div') as HTMLDivElement;\n this.markerOption.element = element;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'display', 'block');\n svg.setAttributeNS(null, 'height', '48px');\n svg.setAttributeNS(null, 'width', '48px');\n svg.setAttributeNS(null, 'viewBox', '0 0 1024 1024');\n\n const path = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'path',\n );\n path.setAttributeNS(\n null,\n 'd',\n 'M512 490.666667C453.12 490.666667 405.333333 442.88 405.333333 384 405.333333 325.12 453.12 277.333333 512 277.333333 570.88 277.333333 618.666667 325.12 618.666667 384 618.666667 442.88 570.88 490.666667 512 490.666667M512 85.333333C346.88 85.333333 213.333333 218.88 213.333333 384 213.333333 608 512 938.666667 512 938.666667 512 938.666667 810.666667 608 810.666667 384 810.666667 218.88 677.12 85.333333 512 85.333333Z',\n );\n path.setAttributeNS(null, 'fill', color);\n svg.appendChild(path);\n element.appendChild(svg);\n }\n DOM.addClass(element, 'l7-marker');\n Object.keys(this.markerOption.style || {}).forEach(\n // @ts-ignore\n (key: keyof CSSStyleDeclaration) => {\n const value =\n this.markerOption?.style && (this.markerOption?.style[key] as string);\n if (element) {\n // @ts-ignore\n (element.style as CSSStyleDeclaration)[key] = value;\n }\n },\n );\n\n element.addEventListener('click', (e: MouseEvent) => {\n this.onMapClick(e);\n });\n element.addEventListener('click', this.eventHandle);\n applyAnchorClass(element, anchor, 'marker');\n }\n private registerMarkerEvent(element: HTMLElement) {\n element.addEventListener('mousemove', this.eventHandle);\n element.addEventListener('click', this.eventHandle);\n element.addEventListener('mousedown', this.eventHandle);\n element.addEventListener('mouseup', this.eventHandle);\n element.addEventListener('dblclick', this.eventHandle);\n element.addEventListener('contextmenu', this.eventHandle);\n element.addEventListener('mouseover', this.eventHandle);\n element.addEventListener('mouseout', this.eventHandle);\n }\n private unRegisterMarkerEvent() {\n const element = this.getElement();\n element.removeEventListener('mousemove', this.eventHandle);\n element.removeEventListener('click', this.eventHandle);\n element.removeEventListener('mousedown', this.eventHandle);\n element.removeEventListener('mouseup', this.eventHandle);\n element.removeEventListener('dblclick', this.eventHandle);\n element.removeEventListener('contextmenu', this.eventHandle);\n element.removeEventListener('mouseover', this.eventHandle);\n element.removeEventListener('mouseout', this.eventHandle);\n }\n\n private eventHandle = (e: MouseEvent) => {\n this.emit(e.type, {\n target: e,\n data: this.markerOption.extData,\n lngLat: this.lngLat,\n });\n };\n private addDragHandler(e: MouseEvent) {\n throw new Error('Method not implemented.');\n }\n\n private onUp(e: MouseEvent) {\n throw new Error('Method not implemented.');\n }\n}\n"],"file":"marker.js"}
package/lib/popup.js CHANGED
@@ -287,6 +287,8 @@ var Popup = function (_EventEmitter) {
287
287
  });
288
288
  });
289
289
  }
290
+
291
+ this.container.style.whiteSpace = 'nowrap';
290
292
  }
291
293
 
292
294
  if (maxWidth && this.container.style.maxWidth !== maxWidth) {
package/lib/popup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/popup.ts"],"names":["Popup","cfg","popupOption","getdefault","scene","mapsService","get","TYPES","IMapService","sceneSerive","ISceneService","on","update","closeOnClick","timeoutInstance","setTimeout","onClickClose","emit","remove","addTo","html","frag","window","document","createDocumentFragment","temp","createElement","child","innerHTML","firstChild","appendChild","setDOMContent","lngLat","Array","isArray","lng","lat","text","createTextNode","maxWidth","htmlNode","createContent","content","removeDom","container","off","clearTimeout","DOM","create","closeButton","closeButtonOffsets","style","right","top","setAttribute","addEventListener","tagName","className","el","undefined","node","parentNode","removeChild","offsets","anchor","anchorType","BOTTOM","stopPropagation","e","hasPosition","popupContainer","getMarkerContainer","creatDom","tip","split","forEach","name","classList","add","type","updatePosition","setTransform","anchorTranslate","pos","lngLatToContainer","left","x","y","EventEmitter"],"mappings":"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","sourcesContent":["import {\n ILngLat,\n IMapService,\n IPoint,\n IPopup,\n IPopupOption,\n ISceneService,\n TYPES,\n} from '@antv/l7-core';\nimport {\n anchorTranslate,\n anchorType,\n applyAnchorClass,\n bindAll,\n DOM,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\n\n/** colse event */\n\nexport default class Popup extends EventEmitter implements IPopup {\n private popupOption: IPopupOption;\n private mapsService: IMapService<unknown>;\n private sceneSerive: ISceneService;\n private lngLat: ILngLat;\n private content: HTMLElement;\n private closeButton: HTMLElement;\n private timeoutInstance: any;\n private container: HTMLElement;\n private tip: HTMLElement;\n private scene: Container;\n\n constructor(cfg?: Partial<IPopupOption>) {\n super();\n this.popupOption = {\n ...this.getdefault(),\n ...cfg,\n };\n bindAll(['update', 'onClickClose', 'remove'], this);\n }\n\n public addTo(scene: Container) {\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n this.sceneSerive = scene.get<ISceneService>(TYPES.ISceneService);\n this.mapsService.on('camerachange', this.update);\n this.mapsService.on('viewchange', this.update);\n this.scene = scene;\n this.update();\n if (this.popupOption.closeOnClick) {\n this.timeoutInstance = setTimeout(() => {\n this.mapsService.on('click', this.onClickClose);\n }, 30);\n }\n this.emit('open');\n return this;\n }\n\n public close(): void {\n this.remove();\n }\n\n public open(): void {\n this.addTo(this.scene);\n }\n\n public setHTML(html: string) {\n const frag = window.document.createDocumentFragment();\n const temp = window.document.createElement('body');\n let child: ChildNode | null;\n temp.innerHTML = html;\n while (true) {\n child = temp.firstChild;\n if (!child) {\n break;\n }\n frag.appendChild(child);\n }\n\n return this.setDOMContent(frag);\n }\n\n public setLnglat(lngLat: ILngLat | number[]): this {\n this.lngLat = lngLat as ILngLat;\n if (Array.isArray(lngLat)) {\n this.lngLat = {\n lng: lngLat[0],\n lat: lngLat[1],\n };\n }\n if (this.mapsService) {\n this.mapsService.on('camerachange', this.update);\n this.mapsService.on('viewchange', this.update);\n }\n this.update();\n return this;\n }\n public getLnglat(): ILngLat {\n return this.lngLat;\n }\n public setText(text: string) {\n return this.setDOMContent(window.document.createTextNode(text));\n }\n\n public setMaxWidth(maxWidth: string): this {\n this.popupOption.maxWidth = maxWidth;\n this.update();\n return this;\n }\n\n public setDOMContent(htmlNode: ChildNode | DocumentFragment) {\n this.createContent();\n this.content.appendChild(htmlNode);\n this.update();\n return this;\n }\n\n // 移除popup\n public remove() {\n if (this.content) {\n this.removeDom(this.content);\n }\n\n if (this.container) {\n this.removeDom(this.container);\n // @ts-ignore\n delete this.container;\n }\n if (this.mapsService) {\n // TODO: mapbox AMap 事件同步\n this.mapsService.off('camerachange', this.update);\n this.mapsService.off('viewchange', this.update);\n this.mapsService.off('click', this.onClickClose);\n // @ts-ignore\n delete this.mapsService;\n }\n clearTimeout(this.timeoutInstance);\n this.emit('close');\n return this;\n }\n public isOpen() {\n return !!this.mapsService;\n }\n\n private createContent() {\n if (this.content) {\n DOM.remove(this.content);\n }\n this.content = DOM.create('div', 'l7-popup-content', this.container);\n if (this.popupOption.closeButton) {\n this.closeButton = DOM.create(\n 'button',\n 'l7-popup-close-button',\n this.content,\n );\n\n if (this.popupOption.closeButtonOffsets) {\n // 关闭按钮的偏移\n this.closeButton.style.right =\n this.popupOption.closeButtonOffsets[0] + 'px';\n this.closeButton.style.top =\n this.popupOption.closeButtonOffsets[1] + 'px';\n }\n\n // this.closeButton.type = 'button';\n this.closeButton.setAttribute('aria-label', 'Close popup');\n this.closeButton.innerHTML = '&#215;';\n this.closeButton.addEventListener('click', this.onClickClose);\n }\n }\n\n private creatDom(tagName: string, className: string, container: HTMLElement) {\n const el = window.document.createElement(tagName);\n if (className !== undefined) {\n el.className = className;\n }\n if (container) {\n container.appendChild(el);\n }\n return el;\n }\n\n private removeDom(node: ChildNode) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n\n private getdefault() {\n return {\n closeButton: true,\n closeOnClick: true,\n maxWidth: '240px',\n offsets: [0, 0],\n anchor: anchorType.BOTTOM,\n className: '',\n stopPropagation: true,\n };\n }\n\n private onClickClose(e: Event) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n this.remove();\n }\n\n private update() {\n const hasPosition = this.lngLat;\n const { className, maxWidth, anchor } = this.popupOption;\n if (!this.mapsService || !hasPosition || !this.content) {\n return;\n }\n const popupContainer = this.mapsService.getMarkerContainer();\n if (!this.container && popupContainer) {\n this.container = this.creatDom(\n 'div',\n 'l7-popup',\n popupContainer as HTMLElement,\n );\n\n this.tip = this.creatDom('div', 'l7-popup-tip', this.container);\n this.container.appendChild(this.content);\n if (className) {\n className\n .split(' ')\n .forEach((name) => this.container.classList.add(name));\n }\n\n // 高德地图需要阻止事件冒泡 // 测试mapbox 地图不需要添加\n const { stopPropagation } = this.popupOption;\n if (stopPropagation) {\n ['mousemove', 'mousedown', 'mouseup', 'click', 'dblclick'].forEach(\n (type) => {\n this.container.addEventListener(type, (e) => {\n e.stopPropagation();\n });\n },\n );\n }\n }\n if (maxWidth && this.container.style.maxWidth !== maxWidth) {\n this.container.style.maxWidth = maxWidth;\n }\n\n this.updatePosition();\n DOM.setTransform(this.container, `${anchorTranslate[anchor]}`);\n applyAnchorClass(this.container, anchor, 'popup');\n }\n\n private updatePosition() {\n if (!this.mapsService) {\n return;\n }\n const { lng, lat } = this.lngLat;\n const { offsets } = this.popupOption;\n const pos = this.mapsService.lngLatToContainer([lng, lat]);\n this.container.style.left = pos.x + offsets[0] + 'px';\n this.container.style.top = pos.y - offsets[1] + 'px';\n }\n}\n"],"file":"popup.js"}
1
+ {"version":3,"sources":["../src/popup.ts"],"names":["Popup","cfg","popupOption","getdefault","scene","mapsService","get","TYPES","IMapService","sceneSerive","ISceneService","on","update","closeOnClick","timeoutInstance","setTimeout","onClickClose","emit","remove","addTo","html","frag","window","document","createDocumentFragment","temp","createElement","child","innerHTML","firstChild","appendChild","setDOMContent","lngLat","Array","isArray","lng","lat","text","createTextNode","maxWidth","htmlNode","createContent","content","removeDom","container","off","clearTimeout","DOM","create","closeButton","closeButtonOffsets","style","right","top","setAttribute","addEventListener","tagName","className","el","undefined","node","parentNode","removeChild","offsets","anchor","anchorType","BOTTOM","stopPropagation","e","hasPosition","popupContainer","getMarkerContainer","creatDom","tip","split","forEach","name","classList","add","type","whiteSpace","updatePosition","setTransform","anchorTranslate","pos","lngLatToContainer","left","x","y","EventEmitter"],"mappings":"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","sourcesContent":["import {\n ILngLat,\n IMapService,\n IPoint,\n IPopup,\n IPopupOption,\n ISceneService,\n TYPES,\n} from '@antv/l7-core';\nimport {\n anchorTranslate,\n anchorType,\n applyAnchorClass,\n bindAll,\n DOM,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\n\n/** colse event */\n\nexport default class Popup extends EventEmitter implements IPopup {\n private popupOption: IPopupOption;\n private mapsService: IMapService<unknown>;\n private sceneSerive: ISceneService;\n private lngLat: ILngLat;\n private content: HTMLElement;\n private closeButton: HTMLElement;\n private timeoutInstance: any;\n private container: HTMLElement;\n private tip: HTMLElement;\n private scene: Container;\n\n constructor(cfg?: Partial<IPopupOption>) {\n super();\n this.popupOption = {\n ...this.getdefault(),\n ...cfg,\n };\n bindAll(['update', 'onClickClose', 'remove'], this);\n }\n\n public addTo(scene: Container) {\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n this.sceneSerive = scene.get<ISceneService>(TYPES.ISceneService);\n this.mapsService.on('camerachange', this.update);\n this.mapsService.on('viewchange', this.update);\n this.scene = scene;\n this.update();\n if (this.popupOption.closeOnClick) {\n this.timeoutInstance = setTimeout(() => {\n this.mapsService.on('click', this.onClickClose);\n }, 30);\n }\n this.emit('open');\n return this;\n }\n\n public close(): void {\n this.remove();\n }\n\n public open(): void {\n this.addTo(this.scene);\n }\n\n public setHTML(html: string) {\n const frag = window.document.createDocumentFragment();\n const temp = window.document.createElement('body');\n let child: ChildNode | null;\n temp.innerHTML = html;\n while (true) {\n child = temp.firstChild;\n if (!child) {\n break;\n }\n frag.appendChild(child);\n }\n\n return this.setDOMContent(frag);\n }\n\n public setLnglat(lngLat: ILngLat | number[]): this {\n this.lngLat = lngLat as ILngLat;\n if (Array.isArray(lngLat)) {\n this.lngLat = {\n lng: lngLat[0],\n lat: lngLat[1],\n };\n }\n if (this.mapsService) {\n this.mapsService.on('camerachange', this.update);\n this.mapsService.on('viewchange', this.update);\n }\n this.update();\n return this;\n }\n public getLnglat(): ILngLat {\n return this.lngLat;\n }\n public setText(text: string) {\n return this.setDOMContent(window.document.createTextNode(text));\n }\n\n public setMaxWidth(maxWidth: string): this {\n this.popupOption.maxWidth = maxWidth;\n this.update();\n return this;\n }\n\n public setDOMContent(htmlNode: ChildNode | DocumentFragment) {\n this.createContent();\n this.content.appendChild(htmlNode);\n this.update();\n return this;\n }\n\n // 移除popup\n public remove() {\n if (this.content) {\n this.removeDom(this.content);\n }\n\n if (this.container) {\n this.removeDom(this.container);\n // @ts-ignore\n delete this.container;\n }\n if (this.mapsService) {\n // TODO: mapbox AMap 事件同步\n this.mapsService.off('camerachange', this.update);\n this.mapsService.off('viewchange', this.update);\n this.mapsService.off('click', this.onClickClose);\n // @ts-ignore\n delete this.mapsService;\n }\n clearTimeout(this.timeoutInstance);\n this.emit('close');\n return this;\n }\n public isOpen() {\n return !!this.mapsService;\n }\n\n private createContent() {\n if (this.content) {\n DOM.remove(this.content);\n }\n this.content = DOM.create('div', 'l7-popup-content', this.container);\n if (this.popupOption.closeButton) {\n this.closeButton = DOM.create(\n 'button',\n 'l7-popup-close-button',\n this.content,\n );\n\n if (this.popupOption.closeButtonOffsets) {\n // 关闭按钮的偏移\n this.closeButton.style.right =\n this.popupOption.closeButtonOffsets[0] + 'px';\n this.closeButton.style.top =\n this.popupOption.closeButtonOffsets[1] + 'px';\n }\n\n // this.closeButton.type = 'button';\n this.closeButton.setAttribute('aria-label', 'Close popup');\n this.closeButton.innerHTML = '&#215;';\n this.closeButton.addEventListener('click', this.onClickClose);\n }\n }\n\n private creatDom(tagName: string, className: string, container: HTMLElement) {\n const el = window.document.createElement(tagName);\n if (className !== undefined) {\n el.className = className;\n }\n if (container) {\n container.appendChild(el);\n }\n return el;\n }\n\n private removeDom(node: ChildNode) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n\n private getdefault() {\n return {\n closeButton: true,\n closeOnClick: true,\n maxWidth: '240px',\n offsets: [0, 0],\n anchor: anchorType.BOTTOM,\n className: '',\n stopPropagation: true,\n };\n }\n\n private onClickClose(e: Event) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n this.remove();\n }\n\n private update() {\n const hasPosition = this.lngLat;\n const { className, maxWidth, anchor } = this.popupOption;\n if (!this.mapsService || !hasPosition || !this.content) {\n return;\n }\n const popupContainer = this.mapsService.getMarkerContainer();\n if (!this.container && popupContainer) {\n this.container = this.creatDom(\n 'div',\n 'l7-popup',\n popupContainer as HTMLElement,\n );\n\n this.tip = this.creatDom('div', 'l7-popup-tip', this.container);\n this.container.appendChild(this.content);\n if (className) {\n className\n .split(' ')\n .forEach((name) => this.container.classList.add(name));\n }\n\n // 高德地图需要阻止事件冒泡 // 测试mapbox 地图不需要添加\n const { stopPropagation } = this.popupOption;\n if (stopPropagation) {\n ['mousemove', 'mousedown', 'mouseup', 'click', 'dblclick'].forEach(\n (type) => {\n this.container.addEventListener(type, (e) => {\n e.stopPropagation();\n });\n },\n );\n }\n\n this.container.style.whiteSpace = 'nowrap';\n }\n if (maxWidth && this.container.style.maxWidth !== maxWidth) {\n this.container.style.maxWidth = maxWidth;\n }\n\n this.updatePosition();\n DOM.setTransform(this.container, `${anchorTranslate[anchor]}`);\n applyAnchorClass(this.container, anchor, 'popup');\n }\n\n private updatePosition() {\n if (!this.mapsService) {\n return;\n }\n const { lng, lat } = this.lngLat;\n const { offsets } = this.popupOption;\n const pos = this.mapsService.lngLatToContainer([lng, lat]);\n this.container.style.left = pos.x + offsets[0] + 'px';\n this.container.style.top = pos.y - offsets[1] + 'px';\n }\n}\n"],"file":"popup.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-component",
3
- "version": "2.6.15",
3
+ "version": "2.6.19",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -25,14 +25,14 @@
25
25
  "author": "lzxue",
26
26
  "license": "ISC",
27
27
  "dependencies": {
28
- "@antv/l7-core": "^2.6.15",
29
- "@antv/l7-utils": "^2.6.15",
28
+ "@antv/l7-core": "^2.6.19",
29
+ "@antv/l7-utils": "^2.6.19",
30
30
  "@babel/runtime": "^7.7.7",
31
31
  "eventemitter3": "^4.0.0",
32
32
  "inversify": "^5.0.1",
33
33
  "reflect-metadata": "^0.1.13"
34
34
  },
35
- "gitHead": "3d87c9473df4153b8af4a481dd920f82bf5646e2",
35
+ "gitHead": "56ec1259af61252ee21bd7e68a6c39865c01eb58",
36
36
  "publishConfig": {
37
37
  "access": "public"
38
38
  }