@antv/l7-component 2.5.21 → 2.5.25
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/control/layer.js +0 -2
- package/es/control/layer.js.map +1 -1
- package/es/popup.js +3 -0
- package/es/popup.js.map +1 -1
- package/lib/control/layer.js +0 -2
- package/lib/control/layer.js.map +1 -1
- package/lib/popup.js +3 -0
- package/lib/popup.js.map +1 -1
- package/package.json +4 -4
package/es/control/layer.js
CHANGED
|
@@ -170,8 +170,6 @@ var Layers = function (_Control) {
|
|
|
170
170
|
_this4.addLayer(baseLayers[name], name, false);
|
|
171
171
|
});
|
|
172
172
|
Object.keys(overlayers).forEach(function (name, index) {
|
|
173
|
-
overlayers[name].once('inited', _this4.update);
|
|
174
|
-
|
|
175
173
|
_this4.addLayer(overlayers[name], name, true);
|
|
176
174
|
});
|
|
177
175
|
}
|
package/es/control/layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/control/layer.ts"],"names":["PositionType","bindAll","DOM","Control","Layers","cfg","layerControlInputs","layers","lastZIndex","handlingClick","initLayers","collapsed","position","TOPRIGHT","autoZIndex","hideSingleBase","sortLayers","name","initLayout","update","mapsService","on","checkDisabledLayers","forEach","layerItem","layer","onLayerChange","container","addLayer","renderService","getViewportSize","height","addClass","form","style","acceptableHeight","offsetTop","clientHeight","removeClass","off","collapse","className","create","controlOption","setAttribute","addEventListener","expand","layersLink","link","title","baseLayersList","separator","overlaysList","appendChild","baseLayers","overlayers","Object","keys","index","once","empty","baseLayersPresent","overlaysPresent","i","obj","baseLayersCount","length","addItem","overlay","display","inputs","input","zoom","getZoom","layerService","getLayer","layerId","inited","minZoom","getMinZoom","maxZoom","getMaxZoom","disabled","push","sortFunction","sort","a","b","setZIndex","expandIfNotCollapsed","e","target","type","emit","checked","radioHtml","radioFragment","document","createElement","innerHTML","firstChild","label","id","isVisible","defaultChecked","createRadioElement","onInputClick","holder","addedLayers","removedLayers","l","hide","show"],"mappings":"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","sourcesContent":["import { IControlOption, PositionName, PositionType } from '@antv/l7-core';\nimport { bindAll, DOM, lnglatDistance } from '@antv/l7-utils';\nimport Control from './BaseControl';\nexport interface ILayerControlOption extends IControlOption {\n collapsed: boolean;\n autoZIndex: boolean;\n hideSingleBase: boolean;\n sortLayers: boolean;\n\n sortFunction: (...args: any[]) => any;\n}\ninterface IInputItem extends HTMLInputElement {\n layerId: string;\n}\nexport default class Layers extends Control {\n private layerControlInputs: any[];\n private layers: any[];\n private lastZIndex: number;\n private handlingClick: boolean;\n private layersLink: HTMLElement;\n private baseLayersList: HTMLElement;\n private separator: HTMLElement;\n private overlaysList: HTMLElement;\n private form: HTMLElement;\n\n constructor(cfg: Partial<ILayerControlOption>) {\n super(cfg);\n this.layerControlInputs = [];\n this.layers = [];\n this.lastZIndex = 0;\n this.handlingClick = false;\n this.initLayers();\n\n bindAll(\n [\n 'checkDisabledLayers',\n 'onLayerChange',\n 'collapse',\n 'extend',\n 'expand',\n 'onInputClick',\n ],\n this,\n );\n }\n\n public getDefault() {\n return {\n collapsed: true,\n position: PositionType.TOPRIGHT,\n autoZIndex: true,\n hideSingleBase: false,\n sortLayers: false,\n name: 'layers',\n };\n }\n public onAdd() {\n this.initLayout();\n this.update();\n this.mapsService.on('zoomend', this.checkDisabledLayers);\n this.layers.forEach((layerItem) => {\n layerItem.layer.on('remove', this.onLayerChange);\n layerItem.layer.on('add', this.onLayerChange);\n });\n return this.container;\n }\n\n public addVisualLayer(layer: any, name: string | number) {\n this.addLayer(layer, name, true);\n return this.mapsService ? this.update() : this;\n }\n public expand() {\n const { height } = this.renderService.getViewportSize();\n DOM.addClass(this.container, 'l7-control-layers-expanded');\n this.form.style.height = 'null';\n const acceptableHeight = height - (this.container.offsetTop + 50);\n if (acceptableHeight < this.form.clientHeight) {\n DOM.addClass(this.form, 'l7-control-layers-scrollbar');\n this.form.style.height = acceptableHeight + 'px';\n } else {\n DOM.removeClass(this.form, 'l7-control-layers-scrollbar');\n }\n this.checkDisabledLayers();\n return this;\n }\n\n public collapse() {\n DOM.removeClass(this.container, 'l7-control-layers-expanded');\n return this;\n }\n\n public onRemove() {\n if (!this.mapsService) {\n return;\n }\n this.mapsService.off('click', this.collapse);\n this.layers.forEach((layerItem) => {\n layerItem.layer.off('remove', this.onLayerChange);\n layerItem.layer.off('add', this.onLayerChange);\n });\n }\n private initLayout() {\n const className = 'l7-control-layers';\n const container = (this.container = DOM.create('div', className));\n const { collapsed } = this.controlOption;\n // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\n container.setAttribute('aria-haspopup', 'true');\n const form = (this.form = DOM.create(\n 'form',\n className + '-list',\n ) as HTMLElement);\n\n if (collapsed) {\n this.mapsService.on('click', this.collapse);\n container.addEventListener('mouseenter', this.expand);\n container.addEventListener('mouseleave', this.collapse);\n }\n\n this.layersLink = DOM.create('a', className + '-toggle', container);\n const link = this.layersLink;\n // link.href = '#';\n link.title = 'Layers';\n if (!collapsed) {\n this.expand();\n }\n this.baseLayersList = DOM.create('div', className + '-base', form);\n this.separator = DOM.create('div', className + '-separator', form);\n this.overlaysList = DOM.create('div', className + '-overlays', form);\n container.appendChild(form);\n }\n private initLayers() {\n const { baseLayers = {}, overlayers = {} } = this.controlOption;\n Object.keys(baseLayers).forEach((name: string, index: number) => {\n // baseLayers[name].once('inited', this.update);\n this.addLayer(baseLayers[name], name, false);\n });\n Object.keys(overlayers).forEach((name: any, index: number) => {\n overlayers[name].once('inited', this.update);\n this.addLayer(overlayers[name], name, true);\n });\n }\n\n private update() {\n if (!this.container) {\n return this;\n }\n\n DOM.empty(this.baseLayersList);\n DOM.empty(this.overlaysList);\n\n this.layerControlInputs = [];\n let baseLayersPresent;\n let overlaysPresent;\n let i;\n let obj;\n let baseLayersCount = 0;\n\n for (i = 0; i < this.layers.length; i++) {\n obj = this.layers[i];\n this.addItem(obj);\n overlaysPresent = overlaysPresent || obj.overlay;\n baseLayersPresent = baseLayersPresent || !obj.overlay;\n baseLayersCount += !obj.overlay ? 1 : 0;\n }\n\n // Hide base layers section if there's only one layer.\n if (this.controlOption.hideSingleBase) {\n baseLayersPresent = baseLayersPresent && baseLayersCount > 1;\n this.baseLayersList.style.display = baseLayersPresent ? '' : 'none';\n }\n\n this.separator.style.display =\n overlaysPresent && baseLayersPresent ? '' : 'none';\n\n return this;\n }\n\n private checkDisabledLayers() {\n const inputs = this.layerControlInputs;\n let input: IInputItem;\n let layer;\n const zoom = this.mapsService.getZoom();\n\n for (let i = inputs.length - 1; i >= 0; i--) {\n input = inputs[i];\n layer = this.layerService.getLayer(input.layerId);\n\n if (layer && layer.inited) {\n const minZoom = layer.getMinZoom();\n const maxZoom = layer.getMaxZoom();\n\n input.disabled = zoom < minZoom || zoom > maxZoom;\n }\n }\n }\n\n private addLayer(layer: any, name: string | number, overlay: boolean) {\n if (this.mapsService) {\n layer.on('add', this.onLayerChange);\n layer.on('remove', this.onLayerChange);\n }\n this.layers.push({\n layer,\n name,\n overlay,\n });\n const { sortLayers, sortFunction, autoZIndex } = this.controlOption;\n if (sortLayers) {\n this.layers.sort((a, b) => {\n return sortFunction(a.layer, b.layer, a.name, b.name);\n });\n }\n\n if (autoZIndex && layer.setZIndex) {\n this.lastZIndex++;\n layer.setZIndex(this.lastZIndex);\n }\n\n this.expandIfNotCollapsed();\n }\n\n private expandIfNotCollapsed() {\n if (this.mapsService && !this.controlOption.collapsed) {\n this.expand();\n }\n return this;\n }\n\n private onLayerChange(e: any) {\n if (!this.handlingClick) {\n this.update();\n }\n\n const obj = this.layerService.getLayer(e.target.layerId);\n\n // @ts-ignore\n const type = obj?.overlay\n ? e.type === 'add'\n ? 'overlayadd'\n : 'overlayremove'\n : e.type === 'add'\n ? 'baselayerchange'\n : null;\n\n if (type) {\n this.emit(type, obj);\n }\n }\n\n private createRadioElement(name: string, checked: boolean): ChildNode {\n const radioHtml =\n '<input type=\"radio\" class=\"l7-control-layers-selector\" name=\"' +\n name +\n '\"' +\n (checked ? ' checked=\"checked\"' : '') +\n '/>';\n\n const radioFragment = document.createElement('div');\n radioFragment.innerHTML = radioHtml;\n\n return radioFragment.firstChild as ChildNode;\n }\n\n private addItem(obj: any) {\n const label = document.createElement('label');\n const layer = this.layerService.getLayer(obj.layer.id);\n const checked = layer && layer.inited && obj.layer.isVisible();\n let input: IInputItem;\n if (obj.overlay) {\n input = document.createElement('input') as IInputItem;\n input.type = 'checkbox';\n input.className = 'l7-control-layers-selector';\n input.defaultChecked = checked;\n } else {\n input = this.createRadioElement('l7-base-layers', checked) as IInputItem;\n }\n this.layerControlInputs.push(input);\n input.layerId = obj.layer.id;\n input.addEventListener('click', this.onInputClick);\n\n const name = document.createElement('span');\n name.innerHTML = ' ' + obj.name;\n\n const holder = document.createElement('div');\n\n label.appendChild(holder);\n holder.appendChild(input);\n holder.appendChild(name);\n\n const container = obj.overlay ? this.overlaysList : this.baseLayersList;\n container.appendChild(label);\n\n this.checkDisabledLayers();\n return label;\n }\n\n private onInputClick() {\n const inputs = this.layerControlInputs;\n let input;\n let layer;\n const addedLayers = [];\n const removedLayers = [];\n this.handlingClick = true;\n for (let i = inputs.length - 1; i >= 0; i--) {\n input = inputs[i];\n layer = this.layerService.getLayer(input.layerId);\n if (input.checked) {\n addedLayers.push(layer);\n } else if (!input.checked) {\n removedLayers.push(layer);\n }\n }\n removedLayers.forEach((l: any) => {\n l.hide();\n });\n addedLayers.forEach((l: any) => {\n l.show();\n });\n\n this.handlingClick = false;\n }\n}\n"],"file":"layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/control/layer.ts"],"names":["PositionType","bindAll","DOM","Control","Layers","cfg","layerControlInputs","layers","lastZIndex","handlingClick","initLayers","collapsed","position","TOPRIGHT","autoZIndex","hideSingleBase","sortLayers","name","initLayout","update","mapsService","on","checkDisabledLayers","forEach","layerItem","layer","onLayerChange","container","addLayer","renderService","getViewportSize","height","addClass","form","style","acceptableHeight","offsetTop","clientHeight","removeClass","off","collapse","className","create","controlOption","setAttribute","addEventListener","expand","layersLink","link","title","baseLayersList","separator","overlaysList","appendChild","baseLayers","overlayers","Object","keys","index","empty","baseLayersPresent","overlaysPresent","i","obj","baseLayersCount","length","addItem","overlay","display","inputs","input","zoom","getZoom","layerService","getLayer","layerId","inited","minZoom","getMinZoom","maxZoom","getMaxZoom","disabled","push","sortFunction","sort","a","b","setZIndex","expandIfNotCollapsed","e","target","type","emit","checked","radioHtml","radioFragment","document","createElement","innerHTML","firstChild","label","id","isVisible","defaultChecked","createRadioElement","onInputClick","holder","addedLayers","removedLayers","l","hide","show"],"mappings":"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","sourcesContent":["import { IControlOption, PositionName, PositionType } from '@antv/l7-core';\nimport { bindAll, DOM, lnglatDistance } from '@antv/l7-utils';\nimport Control from './BaseControl';\nexport interface ILayerControlOption extends IControlOption {\n collapsed: boolean;\n autoZIndex: boolean;\n hideSingleBase: boolean;\n sortLayers: boolean;\n\n sortFunction: (...args: any[]) => any;\n}\ninterface IInputItem extends HTMLInputElement {\n layerId: string;\n}\nexport default class Layers extends Control {\n private layerControlInputs: any[];\n private layers: any[];\n private lastZIndex: number;\n private handlingClick: boolean;\n private layersLink: HTMLElement;\n private baseLayersList: HTMLElement;\n private separator: HTMLElement;\n private overlaysList: HTMLElement;\n private form: HTMLElement;\n\n constructor(cfg: Partial<ILayerControlOption>) {\n super(cfg);\n this.layerControlInputs = [];\n this.layers = [];\n this.lastZIndex = 0;\n this.handlingClick = false;\n this.initLayers();\n\n bindAll(\n [\n 'checkDisabledLayers',\n 'onLayerChange',\n 'collapse',\n 'extend',\n 'expand',\n 'onInputClick',\n ],\n this,\n );\n }\n\n public getDefault() {\n return {\n collapsed: true,\n position: PositionType.TOPRIGHT,\n autoZIndex: true,\n hideSingleBase: false,\n sortLayers: false,\n name: 'layers',\n };\n }\n public onAdd() {\n this.initLayout();\n this.update();\n this.mapsService.on('zoomend', this.checkDisabledLayers);\n this.layers.forEach((layerItem) => {\n layerItem.layer.on('remove', this.onLayerChange);\n layerItem.layer.on('add', this.onLayerChange);\n });\n return this.container;\n }\n\n public addVisualLayer(layer: any, name: string | number) {\n this.addLayer(layer, name, true);\n return this.mapsService ? this.update() : this;\n }\n public expand() {\n const { height } = this.renderService.getViewportSize();\n DOM.addClass(this.container, 'l7-control-layers-expanded');\n this.form.style.height = 'null';\n const acceptableHeight = height - (this.container.offsetTop + 50);\n if (acceptableHeight < this.form.clientHeight) {\n DOM.addClass(this.form, 'l7-control-layers-scrollbar');\n this.form.style.height = acceptableHeight + 'px';\n } else {\n DOM.removeClass(this.form, 'l7-control-layers-scrollbar');\n }\n this.checkDisabledLayers();\n return this;\n }\n\n public collapse() {\n DOM.removeClass(this.container, 'l7-control-layers-expanded');\n return this;\n }\n\n public onRemove() {\n if (!this.mapsService) {\n return;\n }\n this.mapsService.off('click', this.collapse);\n this.layers.forEach((layerItem) => {\n layerItem.layer.off('remove', this.onLayerChange);\n layerItem.layer.off('add', this.onLayerChange);\n });\n }\n private initLayout() {\n const className = 'l7-control-layers';\n const container = (this.container = DOM.create('div', className));\n const { collapsed } = this.controlOption;\n // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\n container.setAttribute('aria-haspopup', 'true');\n const form = (this.form = DOM.create(\n 'form',\n className + '-list',\n ) as HTMLElement);\n\n if (collapsed) {\n this.mapsService.on('click', this.collapse);\n container.addEventListener('mouseenter', this.expand);\n container.addEventListener('mouseleave', this.collapse);\n }\n\n this.layersLink = DOM.create('a', className + '-toggle', container);\n const link = this.layersLink;\n // link.href = '#';\n link.title = 'Layers';\n if (!collapsed) {\n this.expand();\n }\n this.baseLayersList = DOM.create('div', className + '-base', form);\n this.separator = DOM.create('div', className + '-separator', form);\n this.overlaysList = DOM.create('div', className + '-overlays', form);\n container.appendChild(form);\n }\n private initLayers() {\n const { baseLayers = {}, overlayers = {} } = this.controlOption;\n Object.keys(baseLayers).forEach((name: string, index: number) => {\n // baseLayers[name].once('inited', this.update);\n this.addLayer(baseLayers[name], name, false);\n });\n Object.keys(overlayers).forEach((name: any, index: number) => {\n // overlayers[name].once('inited', this.update);\n this.addLayer(overlayers[name], name, true);\n });\n }\n\n private update() {\n if (!this.container) {\n return this;\n }\n\n DOM.empty(this.baseLayersList);\n DOM.empty(this.overlaysList);\n\n this.layerControlInputs = [];\n let baseLayersPresent;\n let overlaysPresent;\n let i;\n let obj;\n let baseLayersCount = 0;\n\n for (i = 0; i < this.layers.length; i++) {\n obj = this.layers[i];\n this.addItem(obj);\n overlaysPresent = overlaysPresent || obj.overlay;\n baseLayersPresent = baseLayersPresent || !obj.overlay;\n baseLayersCount += !obj.overlay ? 1 : 0;\n }\n\n // Hide base layers section if there's only one layer.\n if (this.controlOption.hideSingleBase) {\n baseLayersPresent = baseLayersPresent && baseLayersCount > 1;\n this.baseLayersList.style.display = baseLayersPresent ? '' : 'none';\n }\n\n this.separator.style.display =\n overlaysPresent && baseLayersPresent ? '' : 'none';\n\n return this;\n }\n\n private checkDisabledLayers() {\n const inputs = this.layerControlInputs;\n let input: IInputItem;\n let layer;\n const zoom = this.mapsService.getZoom();\n\n for (let i = inputs.length - 1; i >= 0; i--) {\n input = inputs[i];\n layer = this.layerService.getLayer(input.layerId);\n\n if (layer && layer.inited) {\n const minZoom = layer.getMinZoom();\n const maxZoom = layer.getMaxZoom();\n\n input.disabled = zoom < minZoom || zoom > maxZoom;\n }\n }\n }\n\n private addLayer(layer: any, name: string | number, overlay: boolean) {\n if (this.mapsService) {\n layer.on('add', this.onLayerChange);\n layer.on('remove', this.onLayerChange);\n }\n this.layers.push({\n layer,\n name,\n overlay,\n });\n const { sortLayers, sortFunction, autoZIndex } = this.controlOption;\n if (sortLayers) {\n this.layers.sort((a, b) => {\n return sortFunction(a.layer, b.layer, a.name, b.name);\n });\n }\n\n if (autoZIndex && layer.setZIndex) {\n this.lastZIndex++;\n layer.setZIndex(this.lastZIndex);\n }\n\n this.expandIfNotCollapsed();\n }\n\n private expandIfNotCollapsed() {\n if (this.mapsService && !this.controlOption.collapsed) {\n this.expand();\n }\n return this;\n }\n\n private onLayerChange(e: any) {\n if (!this.handlingClick) {\n this.update();\n }\n\n const obj = this.layerService.getLayer(e.target.layerId);\n\n // @ts-ignore\n const type = obj?.overlay\n ? e.type === 'add'\n ? 'overlayadd'\n : 'overlayremove'\n : e.type === 'add'\n ? 'baselayerchange'\n : null;\n\n if (type) {\n this.emit(type, obj);\n }\n }\n\n private createRadioElement(name: string, checked: boolean): ChildNode {\n const radioHtml =\n '<input type=\"radio\" class=\"l7-control-layers-selector\" name=\"' +\n name +\n '\"' +\n (checked ? ' checked=\"checked\"' : '') +\n '/>';\n\n const radioFragment = document.createElement('div');\n radioFragment.innerHTML = radioHtml;\n\n return radioFragment.firstChild as ChildNode;\n }\n\n private addItem(obj: any) {\n const label = document.createElement('label');\n const layer = this.layerService.getLayer(obj.layer.id);\n const checked = layer && layer.inited && obj.layer.isVisible();\n let input: IInputItem;\n if (obj.overlay) {\n input = document.createElement('input') as IInputItem;\n input.type = 'checkbox';\n input.className = 'l7-control-layers-selector';\n input.defaultChecked = checked;\n } else {\n input = this.createRadioElement('l7-base-layers', checked) as IInputItem;\n }\n this.layerControlInputs.push(input);\n input.layerId = obj.layer.id;\n input.addEventListener('click', this.onInputClick);\n\n const name = document.createElement('span');\n name.innerHTML = ' ' + obj.name;\n\n const holder = document.createElement('div');\n\n label.appendChild(holder);\n holder.appendChild(input);\n holder.appendChild(name);\n\n const container = obj.overlay ? this.overlaysList : this.baseLayersList;\n container.appendChild(label);\n\n this.checkDisabledLayers();\n return label;\n }\n\n private onInputClick() {\n const inputs = this.layerControlInputs;\n let input;\n let layer;\n const addedLayers = [];\n const removedLayers = [];\n this.handlingClick = true;\n for (let i = inputs.length - 1; i >= 0; i--) {\n input = inputs[i];\n layer = this.layerService.getLayer(input.layerId);\n if (input.checked) {\n addedLayers.push(layer);\n } else if (!input.checked) {\n removedLayers.push(layer);\n }\n }\n removedLayers.forEach((l: any) => {\n l.hide();\n });\n addedLayers.forEach((l: any) => {\n l.show();\n });\n\n this.handlingClick = false;\n }\n}\n"],"file":"layer.js"}
|
package/es/popup.js
CHANGED
|
@@ -63,6 +63,7 @@ var Popup = function (_EventEmitter) {
|
|
|
63
63
|
this.mapsService = scene.get(TYPES.IMapService);
|
|
64
64
|
this.sceneSerive = scene.get(TYPES.ISceneService);
|
|
65
65
|
this.mapsService.on('camerachange', this.update);
|
|
66
|
+
this.mapsService.on('viewchange', this.update);
|
|
66
67
|
this.scene = scene;
|
|
67
68
|
this.update();
|
|
68
69
|
|
|
@@ -119,6 +120,7 @@ var Popup = function (_EventEmitter) {
|
|
|
119
120
|
|
|
120
121
|
if (this.mapsService) {
|
|
121
122
|
this.mapsService.on('camerachange', this.update);
|
|
123
|
+
this.mapsService.on('viewchange', this.update);
|
|
122
124
|
}
|
|
123
125
|
|
|
124
126
|
this.update();
|
|
@@ -163,6 +165,7 @@ var Popup = function (_EventEmitter) {
|
|
|
163
165
|
|
|
164
166
|
if (this.mapsService) {
|
|
165
167
|
this.mapsService.off('camerachange', this.update);
|
|
168
|
+
this.mapsService.off('viewchange', this.update);
|
|
166
169
|
this.mapsService.off('click', this.onClickClose);
|
|
167
170
|
delete this.mapsService;
|
|
168
171
|
}
|
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.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 }\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('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 = '×';\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","updatePosition","setTransform","pos","lngLatToContainer","left","x","y"],"mappings":";;;;;;;;;;;;;;;;AAAA,SAOEA,KAPF,QAQO,eARP;AASA,SACEC,eADF,EAEEC,UAFF,EAGEC,gBAHF,EAIEC,OAJF,EAKEC,GALF,QAMO,gBANP;AAOA,SAASC,YAAT,QAA6B,eAA7B;;IAKqBC,K;;;;;AAYnB,iBAAYC,GAAZ,EAAyC;AAAA;;AAAA;;AACvC;;AADuC;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAEvC,UAAKC,WAAL,mCACK,MAAKC,UAAL,EADL,GAEKF,GAFL;AAIAJ,IAAAA,OAAO,CAAC,CAAC,QAAD,EAAW,cAAX,EAA2B,QAA3B,CAAD,gCAAP;AANuC;AAOxC;;;;WAED,eAAaO,KAAb,EAA+B;AAAA;;AAC7B,WAAKC,WAAL,GAAmBD,KAAK,CAACE,GAAN,CAAuBb,KAAK,CAACc,WAA7B,CAAnB;AACA,WAAKC,WAAL,GAAmBJ,KAAK,CAACE,GAAN,CAAyBb,KAAK,CAACgB,aAA/B,CAAnB;AACA,WAAKJ,WAAL,CAAiBK,EAAjB,CAAoB,cAApB,EAAoC,KAAKC,MAAzC;AACA,WAAKN,WAAL,CAAiBK,EAAjB,CAAoB,YAApB,EAAkC,KAAKC,MAAvC;AACA,WAAKP,KAAL,GAAaA,KAAb;AACA,WAAKO,MAAL;;AACA,UAAI,KAAKT,WAAL,CAAiBU,YAArB,EAAmC;AACjC,aAAKC,eAAL,GAAuBC,UAAU,CAAC,YAAM;AACtC,UAAA,MAAI,CAACT,WAAL,CAAiBK,EAAjB,CAAoB,OAApB,EAA6B,MAAI,CAACK,YAAlC;AACD,SAFgC,EAE9B,EAF8B,CAAjC;AAGD;;AACD,WAAKC,IAAL,CAAU,MAAV;AACA,aAAO,IAAP;AACD;;;WAED,iBAAqB;AACnB,WAAKC,MAAL;AACD;;;WAED,gBAAoB;AAClB,WAAKC,KAAL,CAAW,KAAKd,KAAhB;AACD;;;WAED,iBAAee,IAAf,EAA6B;AAC3B,UAAMC,IAAI,GAAGC,MAAM,CAACC,QAAP,CAAgBC,sBAAhB,EAAb;AACA,UAAMC,IAAI,GAAGH,MAAM,CAACC,QAAP,CAAgBG,aAAhB,CAA8B,MAA9B,CAAb;AACA,UAAIC,KAAJ;AACAF,MAAAA,IAAI,CAACG,SAAL,GAAiBR,IAAjB;;AACA,aAAO,IAAP,EAAa;AACXO,QAAAA,KAAK,GAAGF,IAAI,CAACI,UAAb;;AACA,YAAI,CAACF,KAAL,EAAY;AACV;AACD;;AACDN,QAAAA,IAAI,CAACS,WAAL,CAAiBH,KAAjB;AACD;;AAED,aAAO,KAAKI,aAAL,CAAmBV,IAAnB,CAAP;AACD;;;WAED,mBAAiBW,MAAjB,EAAmD;AACjD,WAAKA,MAAL,GAAcA,MAAd;;AACA,UAAIC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAJ,EAA2B;AACzB,aAAKA,MAAL,GAAc;AACZG,UAAAA,GAAG,EAAEH,MAAM,CAAC,CAAD,CADC;AAEZI,UAAAA,GAAG,EAAEJ,MAAM,CAAC,CAAD;AAFC,SAAd;AAID;;AACD,UAAI,KAAK1B,WAAT,EAAsB;AACpB,aAAKA,WAAL,CAAiBK,EAAjB,CAAoB,cAApB,EAAoC,KAAKC,MAAzC;AACA,aAAKN,WAAL,CAAiBK,EAAjB,CAAoB,YAApB,EAAkC,KAAKC,MAAvC;AACD;;AACD,WAAKA,MAAL;AACA,aAAO,IAAP;AACD;;;WACD,qBAA4B;AAC1B,aAAO,KAAKoB,MAAZ;AACD;;;WACD,iBAAeK,IAAf,EAA6B;AAC3B,aAAO,KAAKN,aAAL,CAAmBT,MAAM,CAACC,QAAP,CAAgBe,cAAhB,CAA+BD,IAA/B,CAAnB,CAAP;AACD;;;WAED,qBAAmBE,QAAnB,EAA2C;AACzC,WAAKpC,WAAL,CAAiBoC,QAAjB,GAA4BA,QAA5B;AACA,WAAK3B,MAAL;AACA,aAAO,IAAP;AACD;;;WAED,uBAAqB4B,QAArB,EAA6D;AAC3D,WAAKC,aAAL;AACA,WAAKC,OAAL,CAAaZ,WAAb,CAAyBU,QAAzB;AACA,WAAK5B,MAAL;AACA,aAAO,IAAP;AACD;;;WAGD,kBAAgB;AACd,UAAI,KAAK8B,OAAT,EAAkB;AAChB,aAAKC,SAAL,CAAe,KAAKD,OAApB;AACD;;AAED,UAAI,KAAKE,SAAT,EAAoB;AAClB,aAAKD,SAAL,CAAe,KAAKC,SAApB;AAEA,eAAO,KAAKA,SAAZ;AACD;;AACD,UAAI,KAAKtC,WAAT,EAAsB;AAEpB,aAAKA,WAAL,CAAiBuC,GAAjB,CAAqB,cAArB,EAAqC,KAAKjC,MAA1C;AACA,aAAKN,WAAL,CAAiBuC,GAAjB,CAAqB,YAArB,EAAmC,KAAKjC,MAAxC;AACA,aAAKN,WAAL,CAAiBuC,GAAjB,CAAqB,OAArB,EAA8B,KAAK7B,YAAnC;AAEA,eAAO,KAAKV,WAAZ;AACD;;AACDwC,MAAAA,YAAY,CAAC,KAAKhC,eAAN,CAAZ;AACA,WAAKG,IAAL,CAAU,OAAV;AACA,aAAO,IAAP;AACD;;;WACD,kBAAgB;AACd,aAAO,CAAC,CAAC,KAAKX,WAAd;AACD;;;WAED,yBAAwB;AACtB,UAAI,KAAKoC,OAAT,EAAkB;AAChB3C,QAAAA,GAAG,CAACmB,MAAJ,CAAW,KAAKwB,OAAhB;AACD;;AACD,WAAKA,OAAL,GAAe3C,GAAG,CAACgD,MAAJ,CAAW,KAAX,EAAkB,kBAAlB,EAAsC,KAAKH,SAA3C,CAAf;;AACA,UAAI,KAAKzC,WAAL,CAAiB6C,WAArB,EAAkC;AAChC,aAAKA,WAAL,GAAmBjD,GAAG,CAACgD,MAAJ,CACjB,QADiB,EAEjB,uBAFiB,EAGjB,KAAKL,OAHY,CAAnB;;AAMA,YAAI,KAAKvC,WAAL,CAAiB8C,kBAArB,EAAyC;AAEvC,eAAKD,WAAL,CAAiBE,KAAjB,CAAuBC,KAAvB,GACE,KAAKhD,WAAL,CAAiB8C,kBAAjB,CAAoC,CAApC,IAAyC,IAD3C;AAEA,eAAKD,WAAL,CAAiBE,KAAjB,CAAuBE,GAAvB,GACE,KAAKjD,WAAL,CAAiB8C,kBAAjB,CAAoC,CAApC,IAAyC,IAD3C;AAED;;AAGD,aAAKD,WAAL,CAAiBK,YAAjB,CAA8B,YAA9B,EAA4C,aAA5C;AACA,aAAKL,WAAL,CAAiBpB,SAAjB,GAA6B,QAA7B;AACA,aAAKoB,WAAL,CAAiBM,gBAAjB,CAAkC,OAAlC,EAA2C,KAAKtC,YAAhD;AACD;AACF;;;WAED,kBAAiBuC,OAAjB,EAAkCC,SAAlC,EAAqDZ,SAArD,EAA6E;AAC3E,UAAMa,EAAE,GAAGnC,MAAM,CAACC,QAAP,CAAgBG,aAAhB,CAA8B6B,OAA9B,CAAX;;AACA,UAAIC,SAAS,KAAKE,SAAlB,EAA6B;AAC3BD,QAAAA,EAAE,CAACD,SAAH,GAAeA,SAAf;AACD;;AACD,UAAIZ,SAAJ,EAAe;AACbA,QAAAA,SAAS,CAACd,WAAV,CAAsB2B,EAAtB;AACD;;AACD,aAAOA,EAAP;AACD;;;WAED,mBAAkBE,IAAlB,EAAmC;AACjC,UAAIA,IAAI,CAACC,UAAT,EAAqB;AACnBD,QAAAA,IAAI,CAACC,UAAL,CAAgBC,WAAhB,CAA4BF,IAA5B;AACD;AACF;;;WAED,sBAAqB;AACnB,aAAO;AACLX,QAAAA,WAAW,EAAE,IADR;AAELnC,QAAAA,YAAY,EAAE,IAFT;AAGL0B,QAAAA,QAAQ,EAAE,OAHL;AAILuB,QAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,CAJJ;AAKLC,QAAAA,MAAM,EAAEnE,UAAU,CAACoE,MALd;AAMLR,QAAAA,SAAS,EAAE,EANN;AAOLS,QAAAA,eAAe,EAAE;AAPZ,OAAP;AASD;;;WAED,sBAAqBC,CAArB,EAA+B;AAC7B,UAAIA,CAAC,CAACD,eAAN,EAAuB;AACrBC,QAAAA,CAAC,CAACD,eAAF;AACD;;AACD,WAAK/C,MAAL;AACD;;;WAED,kBAAiB;AAAA;;AACf,UAAMiD,WAAW,GAAG,KAAKnC,MAAzB;AACA,8BAAwC,KAAK7B,WAA7C;AAAA,UAAQqD,SAAR,qBAAQA,SAAR;AAAA,UAAmBjB,QAAnB,qBAAmBA,QAAnB;AAAA,UAA6BwB,MAA7B,qBAA6BA,MAA7B;;AACA,UAAI,CAAC,KAAKzD,WAAN,IAAqB,CAAC6D,WAAtB,IAAqC,CAAC,KAAKzB,OAA/C,EAAwD;AACtD;AACD;;AACD,UAAM0B,cAAc,GAAG,KAAK9D,WAAL,CAAiB+D,kBAAjB,EAAvB;;AACA,UAAI,CAAC,KAAKzB,SAAN,IAAmBwB,cAAvB,EAAuC;AACrC,aAAKxB,SAAL,GAAiB,KAAK0B,QAAL,CACf,KADe,EAEf,UAFe,EAGfF,cAHe,CAAjB;AAMA,aAAKG,GAAL,GAAW,KAAKD,QAAL,CAAc,KAAd,EAAqB,cAArB,EAAqC,KAAK1B,SAA1C,CAAX;AACA,aAAKA,SAAL,CAAed,WAAf,CAA2B,KAAKY,OAAhC;;AACA,YAAIc,SAAJ,EAAe;AACbA,UAAAA,SAAS,CACNgB,KADH,CACS,GADT,EAEGC,OAFH,CAEW,UAACC,IAAD;AAAA,mBAAU,MAAI,CAAC9B,SAAL,CAAe+B,SAAf,CAAyBC,GAAzB,CAA6BF,IAA7B,CAAV;AAAA,WAFX;AAGD;;AAGD,YAAQT,eAAR,GAA4B,KAAK9D,WAAjC,CAAQ8D,eAAR;;AACA,YAAIA,eAAJ,EAAqB;AACnB,WAAC,WAAD,EAAc,WAAd,EAA2B,SAA3B,EAAsC,OAAtC,EAA+C,UAA/C,EAA2DQ,OAA3D,CACE,UAACI,IAAD,EAAU;AACR,YAAA,MAAI,CAACjC,SAAL,CAAeU,gBAAf,CAAgCuB,IAAhC,EAAsC,UAACX,CAAD,EAAO;AAC3CA,cAAAA,CAAC,CAACD,eAAF;AACD,aAFD;AAGD,WALH;AAOD;AACF;;AACD,UAAI1B,QAAQ,IAAI,KAAKK,SAAL,CAAeM,KAAf,CAAqBX,QAArB,KAAkCA,QAAlD,EAA4D;AAC1D,aAAKK,SAAL,CAAeM,KAAf,CAAqBX,QAArB,GAAgCA,QAAhC;AACD;;AAED,WAAKuC,cAAL;AACA/E,MAAAA,GAAG,CAACgF,YAAJ,CAAiB,KAAKnC,SAAtB,YAAoCjD,eAAe,CAACoE,MAAD,CAAnD;AACAlE,MAAAA,gBAAgB,CAAC,KAAK+C,SAAN,EAAiBmB,MAAjB,EAAyB,OAAzB,CAAhB;AACD;;;WAED,0BAAyB;AACvB,UAAI,CAAC,KAAKzD,WAAV,EAAuB;AACrB;AACD;;AACD,yBAAqB,KAAK0B,MAA1B;AAAA,UAAQG,GAAR,gBAAQA,GAAR;AAAA,UAAaC,GAAb,gBAAaA,GAAb;AACA,UAAQ0B,OAAR,GAAoB,KAAK3D,WAAzB,CAAQ2D,OAAR;AACA,UAAMkB,GAAG,GAAG,KAAK1E,WAAL,CAAiB2E,iBAAjB,CAAmC,CAAC9C,GAAD,EAAMC,GAAN,CAAnC,CAAZ;AACA,WAAKQ,SAAL,CAAeM,KAAf,CAAqBgC,IAArB,GAA4BF,GAAG,CAACG,CAAJ,GAAQrB,OAAO,CAAC,CAAD,CAAf,GAAqB,IAAjD;AACA,WAAKlB,SAAL,CAAeM,KAAf,CAAqBE,GAArB,GAA2B4B,GAAG,CAACI,CAAJ,GAAQtB,OAAO,CAAC,CAAD,CAAf,GAAqB,IAAhD;AACD;;;;EA9OgC9D,Y;;SAAdC,K","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 = '×';\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"}
|
package/lib/control/layer.js
CHANGED
|
@@ -182,8 +182,6 @@ var Layers = function (_Control) {
|
|
|
182
182
|
_this4.addLayer(baseLayers[name], name, false);
|
|
183
183
|
});
|
|
184
184
|
Object.keys(overlayers).forEach(function (name, index) {
|
|
185
|
-
overlayers[name].once('inited', _this4.update);
|
|
186
|
-
|
|
187
185
|
_this4.addLayer(overlayers[name], name, true);
|
|
188
186
|
});
|
|
189
187
|
}
|
package/lib/control/layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/control/layer.ts"],"names":["Layers","cfg","layerControlInputs","layers","lastZIndex","handlingClick","initLayers","collapsed","position","PositionType","TOPRIGHT","autoZIndex","hideSingleBase","sortLayers","name","initLayout","update","mapsService","on","checkDisabledLayers","forEach","layerItem","layer","onLayerChange","container","addLayer","renderService","getViewportSize","height","DOM","addClass","form","style","acceptableHeight","offsetTop","clientHeight","removeClass","off","collapse","className","create","controlOption","setAttribute","addEventListener","expand","layersLink","link","title","baseLayersList","separator","overlaysList","appendChild","baseLayers","overlayers","Object","keys","index","once","empty","baseLayersPresent","overlaysPresent","i","obj","baseLayersCount","length","addItem","overlay","display","inputs","input","zoom","getZoom","layerService","getLayer","layerId","inited","minZoom","getMinZoom","maxZoom","getMaxZoom","disabled","push","sortFunction","sort","a","b","setZIndex","expandIfNotCollapsed","e","target","type","emit","checked","radioHtml","radioFragment","document","createElement","innerHTML","firstChild","label","id","isVisible","defaultChecked","createRadioElement","onInputClick","holder","addedLayers","removedLayers","l","hide","show","Control"],"mappings":"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","sourcesContent":["import { IControlOption, PositionName, PositionType } from '@antv/l7-core';\nimport { bindAll, DOM, lnglatDistance } from '@antv/l7-utils';\nimport Control from './BaseControl';\nexport interface ILayerControlOption extends IControlOption {\n collapsed: boolean;\n autoZIndex: boolean;\n hideSingleBase: boolean;\n sortLayers: boolean;\n\n sortFunction: (...args: any[]) => any;\n}\ninterface IInputItem extends HTMLInputElement {\n layerId: string;\n}\nexport default class Layers extends Control {\n private layerControlInputs: any[];\n private layers: any[];\n private lastZIndex: number;\n private handlingClick: boolean;\n private layersLink: HTMLElement;\n private baseLayersList: HTMLElement;\n private separator: HTMLElement;\n private overlaysList: HTMLElement;\n private form: HTMLElement;\n\n constructor(cfg: Partial<ILayerControlOption>) {\n super(cfg);\n this.layerControlInputs = [];\n this.layers = [];\n this.lastZIndex = 0;\n this.handlingClick = false;\n this.initLayers();\n\n bindAll(\n [\n 'checkDisabledLayers',\n 'onLayerChange',\n 'collapse',\n 'extend',\n 'expand',\n 'onInputClick',\n ],\n this,\n );\n }\n\n public getDefault() {\n return {\n collapsed: true,\n position: PositionType.TOPRIGHT,\n autoZIndex: true,\n hideSingleBase: false,\n sortLayers: false,\n name: 'layers',\n };\n }\n public onAdd() {\n this.initLayout();\n this.update();\n this.mapsService.on('zoomend', this.checkDisabledLayers);\n this.layers.forEach((layerItem) => {\n layerItem.layer.on('remove', this.onLayerChange);\n layerItem.layer.on('add', this.onLayerChange);\n });\n return this.container;\n }\n\n public addVisualLayer(layer: any, name: string | number) {\n this.addLayer(layer, name, true);\n return this.mapsService ? this.update() : this;\n }\n public expand() {\n const { height } = this.renderService.getViewportSize();\n DOM.addClass(this.container, 'l7-control-layers-expanded');\n this.form.style.height = 'null';\n const acceptableHeight = height - (this.container.offsetTop + 50);\n if (acceptableHeight < this.form.clientHeight) {\n DOM.addClass(this.form, 'l7-control-layers-scrollbar');\n this.form.style.height = acceptableHeight + 'px';\n } else {\n DOM.removeClass(this.form, 'l7-control-layers-scrollbar');\n }\n this.checkDisabledLayers();\n return this;\n }\n\n public collapse() {\n DOM.removeClass(this.container, 'l7-control-layers-expanded');\n return this;\n }\n\n public onRemove() {\n if (!this.mapsService) {\n return;\n }\n this.mapsService.off('click', this.collapse);\n this.layers.forEach((layerItem) => {\n layerItem.layer.off('remove', this.onLayerChange);\n layerItem.layer.off('add', this.onLayerChange);\n });\n }\n private initLayout() {\n const className = 'l7-control-layers';\n const container = (this.container = DOM.create('div', className));\n const { collapsed } = this.controlOption;\n // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\n container.setAttribute('aria-haspopup', 'true');\n const form = (this.form = DOM.create(\n 'form',\n className + '-list',\n ) as HTMLElement);\n\n if (collapsed) {\n this.mapsService.on('click', this.collapse);\n container.addEventListener('mouseenter', this.expand);\n container.addEventListener('mouseleave', this.collapse);\n }\n\n this.layersLink = DOM.create('a', className + '-toggle', container);\n const link = this.layersLink;\n // link.href = '#';\n link.title = 'Layers';\n if (!collapsed) {\n this.expand();\n }\n this.baseLayersList = DOM.create('div', className + '-base', form);\n this.separator = DOM.create('div', className + '-separator', form);\n this.overlaysList = DOM.create('div', className + '-overlays', form);\n container.appendChild(form);\n }\n private initLayers() {\n const { baseLayers = {}, overlayers = {} } = this.controlOption;\n Object.keys(baseLayers).forEach((name: string, index: number) => {\n // baseLayers[name].once('inited', this.update);\n this.addLayer(baseLayers[name], name, false);\n });\n Object.keys(overlayers).forEach((name: any, index: number) => {\n overlayers[name].once('inited', this.update);\n this.addLayer(overlayers[name], name, true);\n });\n }\n\n private update() {\n if (!this.container) {\n return this;\n }\n\n DOM.empty(this.baseLayersList);\n DOM.empty(this.overlaysList);\n\n this.layerControlInputs = [];\n let baseLayersPresent;\n let overlaysPresent;\n let i;\n let obj;\n let baseLayersCount = 0;\n\n for (i = 0; i < this.layers.length; i++) {\n obj = this.layers[i];\n this.addItem(obj);\n overlaysPresent = overlaysPresent || obj.overlay;\n baseLayersPresent = baseLayersPresent || !obj.overlay;\n baseLayersCount += !obj.overlay ? 1 : 0;\n }\n\n // Hide base layers section if there's only one layer.\n if (this.controlOption.hideSingleBase) {\n baseLayersPresent = baseLayersPresent && baseLayersCount > 1;\n this.baseLayersList.style.display = baseLayersPresent ? '' : 'none';\n }\n\n this.separator.style.display =\n overlaysPresent && baseLayersPresent ? '' : 'none';\n\n return this;\n }\n\n private checkDisabledLayers() {\n const inputs = this.layerControlInputs;\n let input: IInputItem;\n let layer;\n const zoom = this.mapsService.getZoom();\n\n for (let i = inputs.length - 1; i >= 0; i--) {\n input = inputs[i];\n layer = this.layerService.getLayer(input.layerId);\n\n if (layer && layer.inited) {\n const minZoom = layer.getMinZoom();\n const maxZoom = layer.getMaxZoom();\n\n input.disabled = zoom < minZoom || zoom > maxZoom;\n }\n }\n }\n\n private addLayer(layer: any, name: string | number, overlay: boolean) {\n if (this.mapsService) {\n layer.on('add', this.onLayerChange);\n layer.on('remove', this.onLayerChange);\n }\n this.layers.push({\n layer,\n name,\n overlay,\n });\n const { sortLayers, sortFunction, autoZIndex } = this.controlOption;\n if (sortLayers) {\n this.layers.sort((a, b) => {\n return sortFunction(a.layer, b.layer, a.name, b.name);\n });\n }\n\n if (autoZIndex && layer.setZIndex) {\n this.lastZIndex++;\n layer.setZIndex(this.lastZIndex);\n }\n\n this.expandIfNotCollapsed();\n }\n\n private expandIfNotCollapsed() {\n if (this.mapsService && !this.controlOption.collapsed) {\n this.expand();\n }\n return this;\n }\n\n private onLayerChange(e: any) {\n if (!this.handlingClick) {\n this.update();\n }\n\n const obj = this.layerService.getLayer(e.target.layerId);\n\n // @ts-ignore\n const type = obj?.overlay\n ? e.type === 'add'\n ? 'overlayadd'\n : 'overlayremove'\n : e.type === 'add'\n ? 'baselayerchange'\n : null;\n\n if (type) {\n this.emit(type, obj);\n }\n }\n\n private createRadioElement(name: string, checked: boolean): ChildNode {\n const radioHtml =\n '<input type=\"radio\" class=\"l7-control-layers-selector\" name=\"' +\n name +\n '\"' +\n (checked ? ' checked=\"checked\"' : '') +\n '/>';\n\n const radioFragment = document.createElement('div');\n radioFragment.innerHTML = radioHtml;\n\n return radioFragment.firstChild as ChildNode;\n }\n\n private addItem(obj: any) {\n const label = document.createElement('label');\n const layer = this.layerService.getLayer(obj.layer.id);\n const checked = layer && layer.inited && obj.layer.isVisible();\n let input: IInputItem;\n if (obj.overlay) {\n input = document.createElement('input') as IInputItem;\n input.type = 'checkbox';\n input.className = 'l7-control-layers-selector';\n input.defaultChecked = checked;\n } else {\n input = this.createRadioElement('l7-base-layers', checked) as IInputItem;\n }\n this.layerControlInputs.push(input);\n input.layerId = obj.layer.id;\n input.addEventListener('click', this.onInputClick);\n\n const name = document.createElement('span');\n name.innerHTML = ' ' + obj.name;\n\n const holder = document.createElement('div');\n\n label.appendChild(holder);\n holder.appendChild(input);\n holder.appendChild(name);\n\n const container = obj.overlay ? this.overlaysList : this.baseLayersList;\n container.appendChild(label);\n\n this.checkDisabledLayers();\n return label;\n }\n\n private onInputClick() {\n const inputs = this.layerControlInputs;\n let input;\n let layer;\n const addedLayers = [];\n const removedLayers = [];\n this.handlingClick = true;\n for (let i = inputs.length - 1; i >= 0; i--) {\n input = inputs[i];\n layer = this.layerService.getLayer(input.layerId);\n if (input.checked) {\n addedLayers.push(layer);\n } else if (!input.checked) {\n removedLayers.push(layer);\n }\n }\n removedLayers.forEach((l: any) => {\n l.hide();\n });\n addedLayers.forEach((l: any) => {\n l.show();\n });\n\n this.handlingClick = false;\n }\n}\n"],"file":"layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/control/layer.ts"],"names":["Layers","cfg","layerControlInputs","layers","lastZIndex","handlingClick","initLayers","collapsed","position","PositionType","TOPRIGHT","autoZIndex","hideSingleBase","sortLayers","name","initLayout","update","mapsService","on","checkDisabledLayers","forEach","layerItem","layer","onLayerChange","container","addLayer","renderService","getViewportSize","height","DOM","addClass","form","style","acceptableHeight","offsetTop","clientHeight","removeClass","off","collapse","className","create","controlOption","setAttribute","addEventListener","expand","layersLink","link","title","baseLayersList","separator","overlaysList","appendChild","baseLayers","overlayers","Object","keys","index","empty","baseLayersPresent","overlaysPresent","i","obj","baseLayersCount","length","addItem","overlay","display","inputs","input","zoom","getZoom","layerService","getLayer","layerId","inited","minZoom","getMinZoom","maxZoom","getMaxZoom","disabled","push","sortFunction","sort","a","b","setZIndex","expandIfNotCollapsed","e","target","type","emit","checked","radioHtml","radioFragment","document","createElement","innerHTML","firstChild","label","id","isVisible","defaultChecked","createRadioElement","onInputClick","holder","addedLayers","removedLayers","l","hide","show","Control"],"mappings":"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","sourcesContent":["import { IControlOption, PositionName, PositionType } from '@antv/l7-core';\nimport { bindAll, DOM, lnglatDistance } from '@antv/l7-utils';\nimport Control from './BaseControl';\nexport interface ILayerControlOption extends IControlOption {\n collapsed: boolean;\n autoZIndex: boolean;\n hideSingleBase: boolean;\n sortLayers: boolean;\n\n sortFunction: (...args: any[]) => any;\n}\ninterface IInputItem extends HTMLInputElement {\n layerId: string;\n}\nexport default class Layers extends Control {\n private layerControlInputs: any[];\n private layers: any[];\n private lastZIndex: number;\n private handlingClick: boolean;\n private layersLink: HTMLElement;\n private baseLayersList: HTMLElement;\n private separator: HTMLElement;\n private overlaysList: HTMLElement;\n private form: HTMLElement;\n\n constructor(cfg: Partial<ILayerControlOption>) {\n super(cfg);\n this.layerControlInputs = [];\n this.layers = [];\n this.lastZIndex = 0;\n this.handlingClick = false;\n this.initLayers();\n\n bindAll(\n [\n 'checkDisabledLayers',\n 'onLayerChange',\n 'collapse',\n 'extend',\n 'expand',\n 'onInputClick',\n ],\n this,\n );\n }\n\n public getDefault() {\n return {\n collapsed: true,\n position: PositionType.TOPRIGHT,\n autoZIndex: true,\n hideSingleBase: false,\n sortLayers: false,\n name: 'layers',\n };\n }\n public onAdd() {\n this.initLayout();\n this.update();\n this.mapsService.on('zoomend', this.checkDisabledLayers);\n this.layers.forEach((layerItem) => {\n layerItem.layer.on('remove', this.onLayerChange);\n layerItem.layer.on('add', this.onLayerChange);\n });\n return this.container;\n }\n\n public addVisualLayer(layer: any, name: string | number) {\n this.addLayer(layer, name, true);\n return this.mapsService ? this.update() : this;\n }\n public expand() {\n const { height } = this.renderService.getViewportSize();\n DOM.addClass(this.container, 'l7-control-layers-expanded');\n this.form.style.height = 'null';\n const acceptableHeight = height - (this.container.offsetTop + 50);\n if (acceptableHeight < this.form.clientHeight) {\n DOM.addClass(this.form, 'l7-control-layers-scrollbar');\n this.form.style.height = acceptableHeight + 'px';\n } else {\n DOM.removeClass(this.form, 'l7-control-layers-scrollbar');\n }\n this.checkDisabledLayers();\n return this;\n }\n\n public collapse() {\n DOM.removeClass(this.container, 'l7-control-layers-expanded');\n return this;\n }\n\n public onRemove() {\n if (!this.mapsService) {\n return;\n }\n this.mapsService.off('click', this.collapse);\n this.layers.forEach((layerItem) => {\n layerItem.layer.off('remove', this.onLayerChange);\n layerItem.layer.off('add', this.onLayerChange);\n });\n }\n private initLayout() {\n const className = 'l7-control-layers';\n const container = (this.container = DOM.create('div', className));\n const { collapsed } = this.controlOption;\n // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\n container.setAttribute('aria-haspopup', 'true');\n const form = (this.form = DOM.create(\n 'form',\n className + '-list',\n ) as HTMLElement);\n\n if (collapsed) {\n this.mapsService.on('click', this.collapse);\n container.addEventListener('mouseenter', this.expand);\n container.addEventListener('mouseleave', this.collapse);\n }\n\n this.layersLink = DOM.create('a', className + '-toggle', container);\n const link = this.layersLink;\n // link.href = '#';\n link.title = 'Layers';\n if (!collapsed) {\n this.expand();\n }\n this.baseLayersList = DOM.create('div', className + '-base', form);\n this.separator = DOM.create('div', className + '-separator', form);\n this.overlaysList = DOM.create('div', className + '-overlays', form);\n container.appendChild(form);\n }\n private initLayers() {\n const { baseLayers = {}, overlayers = {} } = this.controlOption;\n Object.keys(baseLayers).forEach((name: string, index: number) => {\n // baseLayers[name].once('inited', this.update);\n this.addLayer(baseLayers[name], name, false);\n });\n Object.keys(overlayers).forEach((name: any, index: number) => {\n // overlayers[name].once('inited', this.update);\n this.addLayer(overlayers[name], name, true);\n });\n }\n\n private update() {\n if (!this.container) {\n return this;\n }\n\n DOM.empty(this.baseLayersList);\n DOM.empty(this.overlaysList);\n\n this.layerControlInputs = [];\n let baseLayersPresent;\n let overlaysPresent;\n let i;\n let obj;\n let baseLayersCount = 0;\n\n for (i = 0; i < this.layers.length; i++) {\n obj = this.layers[i];\n this.addItem(obj);\n overlaysPresent = overlaysPresent || obj.overlay;\n baseLayersPresent = baseLayersPresent || !obj.overlay;\n baseLayersCount += !obj.overlay ? 1 : 0;\n }\n\n // Hide base layers section if there's only one layer.\n if (this.controlOption.hideSingleBase) {\n baseLayersPresent = baseLayersPresent && baseLayersCount > 1;\n this.baseLayersList.style.display = baseLayersPresent ? '' : 'none';\n }\n\n this.separator.style.display =\n overlaysPresent && baseLayersPresent ? '' : 'none';\n\n return this;\n }\n\n private checkDisabledLayers() {\n const inputs = this.layerControlInputs;\n let input: IInputItem;\n let layer;\n const zoom = this.mapsService.getZoom();\n\n for (let i = inputs.length - 1; i >= 0; i--) {\n input = inputs[i];\n layer = this.layerService.getLayer(input.layerId);\n\n if (layer && layer.inited) {\n const minZoom = layer.getMinZoom();\n const maxZoom = layer.getMaxZoom();\n\n input.disabled = zoom < minZoom || zoom > maxZoom;\n }\n }\n }\n\n private addLayer(layer: any, name: string | number, overlay: boolean) {\n if (this.mapsService) {\n layer.on('add', this.onLayerChange);\n layer.on('remove', this.onLayerChange);\n }\n this.layers.push({\n layer,\n name,\n overlay,\n });\n const { sortLayers, sortFunction, autoZIndex } = this.controlOption;\n if (sortLayers) {\n this.layers.sort((a, b) => {\n return sortFunction(a.layer, b.layer, a.name, b.name);\n });\n }\n\n if (autoZIndex && layer.setZIndex) {\n this.lastZIndex++;\n layer.setZIndex(this.lastZIndex);\n }\n\n this.expandIfNotCollapsed();\n }\n\n private expandIfNotCollapsed() {\n if (this.mapsService && !this.controlOption.collapsed) {\n this.expand();\n }\n return this;\n }\n\n private onLayerChange(e: any) {\n if (!this.handlingClick) {\n this.update();\n }\n\n const obj = this.layerService.getLayer(e.target.layerId);\n\n // @ts-ignore\n const type = obj?.overlay\n ? e.type === 'add'\n ? 'overlayadd'\n : 'overlayremove'\n : e.type === 'add'\n ? 'baselayerchange'\n : null;\n\n if (type) {\n this.emit(type, obj);\n }\n }\n\n private createRadioElement(name: string, checked: boolean): ChildNode {\n const radioHtml =\n '<input type=\"radio\" class=\"l7-control-layers-selector\" name=\"' +\n name +\n '\"' +\n (checked ? ' checked=\"checked\"' : '') +\n '/>';\n\n const radioFragment = document.createElement('div');\n radioFragment.innerHTML = radioHtml;\n\n return radioFragment.firstChild as ChildNode;\n }\n\n private addItem(obj: any) {\n const label = document.createElement('label');\n const layer = this.layerService.getLayer(obj.layer.id);\n const checked = layer && layer.inited && obj.layer.isVisible();\n let input: IInputItem;\n if (obj.overlay) {\n input = document.createElement('input') as IInputItem;\n input.type = 'checkbox';\n input.className = 'l7-control-layers-selector';\n input.defaultChecked = checked;\n } else {\n input = this.createRadioElement('l7-base-layers', checked) as IInputItem;\n }\n this.layerControlInputs.push(input);\n input.layerId = obj.layer.id;\n input.addEventListener('click', this.onInputClick);\n\n const name = document.createElement('span');\n name.innerHTML = ' ' + obj.name;\n\n const holder = document.createElement('div');\n\n label.appendChild(holder);\n holder.appendChild(input);\n holder.appendChild(name);\n\n const container = obj.overlay ? this.overlaysList : this.baseLayersList;\n container.appendChild(label);\n\n this.checkDisabledLayers();\n return label;\n }\n\n private onInputClick() {\n const inputs = this.layerControlInputs;\n let input;\n let layer;\n const addedLayers = [];\n const removedLayers = [];\n this.handlingClick = true;\n for (let i = inputs.length - 1; i >= 0; i--) {\n input = inputs[i];\n layer = this.layerService.getLayer(input.layerId);\n if (input.checked) {\n addedLayers.push(layer);\n } else if (!input.checked) {\n removedLayers.push(layer);\n }\n }\n removedLayers.forEach((l: any) => {\n l.hide();\n });\n addedLayers.forEach((l: any) => {\n l.show();\n });\n\n this.handlingClick = false;\n }\n}\n"],"file":"layer.js"}
|
package/lib/popup.js
CHANGED
|
@@ -68,6 +68,7 @@ var Popup = function (_EventEmitter) {
|
|
|
68
68
|
this.mapsService = scene.get(_l7Core.TYPES.IMapService);
|
|
69
69
|
this.sceneSerive = scene.get(_l7Core.TYPES.ISceneService);
|
|
70
70
|
this.mapsService.on('camerachange', this.update);
|
|
71
|
+
this.mapsService.on('viewchange', this.update);
|
|
71
72
|
this.scene = scene;
|
|
72
73
|
this.update();
|
|
73
74
|
|
|
@@ -124,6 +125,7 @@ var Popup = function (_EventEmitter) {
|
|
|
124
125
|
|
|
125
126
|
if (this.mapsService) {
|
|
126
127
|
this.mapsService.on('camerachange', this.update);
|
|
128
|
+
this.mapsService.on('viewchange', this.update);
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
this.update();
|
|
@@ -168,6 +170,7 @@ var Popup = function (_EventEmitter) {
|
|
|
168
170
|
|
|
169
171
|
if (this.mapsService) {
|
|
170
172
|
this.mapsService.off('camerachange', this.update);
|
|
173
|
+
this.mapsService.off('viewchange', this.update);
|
|
171
174
|
this.mapsService.off('click', this.onClickClose);
|
|
172
175
|
delete this.mapsService;
|
|
173
176
|
}
|
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.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 }\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('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 = '×';\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","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 = '×';\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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/l7-component",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.25",
|
|
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.5.
|
|
29
|
-
"@antv/l7-utils": "^2.5.
|
|
28
|
+
"@antv/l7-core": "^2.5.25",
|
|
29
|
+
"@antv/l7-utils": "^2.5.25",
|
|
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": "
|
|
35
|
+
"gitHead": "0b6a20a82c4903369d1f7d3f545052e3bd1dc00e",
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public"
|
|
38
38
|
}
|