@antv/l7-component 2.9.4 → 2.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,6 @@
1
- import { IControlOption, PositionType } from '@antv/l7-core';
1
+ import { PositionType } from '@antv/l7-core';
2
+ import { ILayerControlOption } from '../interface';
2
3
  import Control from './BaseControl';
3
- export interface ILayerControlOption extends IControlOption {
4
- collapsed: boolean;
5
- autoZIndex: boolean;
6
- hideSingleBase: boolean;
7
- sortLayers: boolean;
8
- sortFunction: (...args: any[]) => any;
9
- }
10
4
  export default class Layers extends Control {
11
5
  private layerControlInputs;
12
6
  private layers;
@@ -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","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 { PositionType } from '@antv/l7-core';\nimport { bindAll, DOM } from '@antv/l7-utils';\nimport { ILayerControlOption } from '../interface';\nimport Control from './BaseControl';\n\ninterface IInputItem extends HTMLInputElement {\n layerId: string;\n}\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 +1 @@
1
- {"version":3,"sources":["../../src/control/logo.ts"],"names":["DOM","Control","PositionType","Logo","position","BOTTOMLEFT","name","className","container","create","anchor","target","rel","href","setAttribute","appendChild"],"mappings":";;;;;;;;;;AACA,SAASA,GAAT,QAAoB,gBAApB;AACA,OAAOC,OAAP,IAAkBC,YAAlB,QAAsC,eAAtC;;IACqBC,I;;;;;;;;;;;;;WACnB,sBAAoB;AAClB,aAAO;AACLC,QAAAA,QAAQ,EAAEF,YAAY,CAACG,UADlB;AAELC,QAAAA,IAAI,EAAE;AAFD,OAAP;AAID;;;WACD,iBAAe;AACb,UAAMC,SAAS,GAAG,iBAAlB;AACA,UAAMC,SAAS,GAAGR,GAAG,CAACS,MAAJ,CAAW,KAAX,EAAkBF,SAAlB,CAAlB;AACA,UAAMG,MAAuB,GAAGV,GAAG,CAACS,MAAJ,CAC9B,GAD8B,EAE9B,cAF8B,CAAhC;AAIAC,MAAAA,MAAM,CAACC,MAAP,GAAgB,QAAhB;AACAD,MAAAA,MAAM,CAACE,GAAP,GAAa,mBAAb;AACAF,MAAAA,MAAM,CAACG,IAAP,GAAc,4BAAd;AACAH,MAAAA,MAAM,CAACI,YAAP,CAAoB,YAApB,EAAkC,WAAlC;AACAJ,MAAAA,MAAM,CAACI,YAAP,CAAoB,KAApB,EAA2B,mBAA3B;AACAN,MAAAA,SAAS,CAACO,WAAV,CAAsBL,MAAtB;AACA,aAAOF,SAAP;AACD;;;WAED,oBAAkB;AAChB,aAAO,IAAP;AACD;;;;EAzB+BP,O;;SAAbE,I","sourcesContent":["import { IControlOption } from '@antv/l7-core';\nimport { DOM } from '@antv/l7-utils';\nimport Control, { PositionType } from './BaseControl';\nexport default class Logo extends Control {\n public getDefault() {\n return {\n position: PositionType.BOTTOMLEFT,\n name: 'logo',\n };\n }\n public onAdd() {\n const className = 'l7-control-logo';\n const container = DOM.create('div', className);\n const anchor: HTMLLinkElement = DOM.create(\n 'a',\n 'l7-ctrl-logo',\n ) as HTMLLinkElement;\n anchor.target = '_blank';\n anchor.rel = 'noopener nofollow';\n anchor.href = 'https://antv.alipay.com/l7';\n anchor.setAttribute('aria-label', 'AntV logo');\n anchor.setAttribute('rel', 'noopener nofollow');\n container.appendChild(anchor);\n return container;\n }\n\n public onRemove() {\n return null;\n }\n}\n"],"file":"logo.js"}
1
+ {"version":3,"sources":["../../src/control/logo.ts"],"names":["DOM","Control","PositionType","Logo","position","BOTTOMLEFT","name","className","container","create","anchor","target","rel","href","setAttribute","appendChild"],"mappings":";;;;;;;;;;AACA,SAASA,GAAT,QAAoB,gBAApB;AACA,OAAOC,OAAP,IAAkBC,YAAlB,QAAsC,eAAtC;;IAEqBC,I;;;;;;;;;;;;;WACnB,sBAAoB;AAClB,aAAO;AACLC,QAAAA,QAAQ,EAAEF,YAAY,CAACG,UADlB;AAELC,QAAAA,IAAI,EAAE;AAFD,OAAP;AAID;;;WACD,iBAAe;AACb,UAAMC,SAAS,GAAG,iBAAlB;AACA,UAAMC,SAAS,GAAGR,GAAG,CAACS,MAAJ,CAAW,KAAX,EAAkBF,SAAlB,CAAlB;AACA,UAAMG,MAAuB,GAAGV,GAAG,CAACS,MAAJ,CAC9B,GAD8B,EAE9B,cAF8B,CAAhC;AAIAC,MAAAA,MAAM,CAACC,MAAP,GAAgB,QAAhB;AACAD,MAAAA,MAAM,CAACE,GAAP,GAAa,mBAAb;AACAF,MAAAA,MAAM,CAACG,IAAP,GAAc,4BAAd;AACAH,MAAAA,MAAM,CAACI,YAAP,CAAoB,YAApB,EAAkC,WAAlC;AACAJ,MAAAA,MAAM,CAACI,YAAP,CAAoB,KAApB,EAA2B,mBAA3B;AACAN,MAAAA,SAAS,CAACO,WAAV,CAAsBL,MAAtB;AACA,aAAOF,SAAP;AACD;;;WAED,oBAAkB;AAChB,aAAO,IAAP;AACD;;;;EAzB+BP,O;;SAAbE,I","sourcesContent":["import { IControlOption } from '@antv/l7-core';\nimport { DOM } from '@antv/l7-utils';\nimport Control, { PositionType } from './BaseControl';\n\nexport default class Logo extends Control {\n public getDefault() {\n return {\n position: PositionType.BOTTOMLEFT,\n name: 'logo',\n };\n }\n public onAdd() {\n const className = 'l7-control-logo';\n const container = DOM.create('div', className);\n const anchor: HTMLLinkElement = DOM.create(\n 'a',\n 'l7-ctrl-logo',\n ) as HTMLLinkElement;\n anchor.target = '_blank';\n anchor.rel = 'noopener nofollow';\n anchor.href = 'https://antv.alipay.com/l7';\n anchor.setAttribute('aria-label', 'AntV logo');\n anchor.setAttribute('rel', 'noopener nofollow');\n container.appendChild(anchor);\n return container;\n }\n\n public onRemove() {\n return null;\n }\n}\n"],"file":"logo.js"}
@@ -1,11 +1,5 @@
1
- import { IControlOption } from '@antv/l7-core';
1
+ import { IScaleControlOption } from '../interface';
2
2
  import Control, { PositionType } from './BaseControl';
3
- export interface IScaleControlOption extends IControlOption {
4
- maxWidth: number;
5
- metric: boolean;
6
- updateWhenIdle: boolean;
7
- imperial: boolean;
8
- }
9
3
  export default class Scale extends Control {
10
4
  private mScale;
11
5
  private iScale;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/control/scale.ts"],"names":["bindAll","DOM","lnglatDistance","Control","PositionType","Scale","cfg","position","BOTTOMLEFT","maxWidth","metric","updateWhenIdle","imperial","name","className","container","create","addScales","controlOption","mapsService","on","update","off","y","getSize","p1","containerToLngLat","p2","maxMeters","lng","lat","updateScales","updateMetric","updateImperial","meters","getRoundNum","label","updateScale","mScale","maxFeet","maxMiles","miles","feet","iScale","scale","text","ratio","style","width","Math","round","innerHTML","num","pow10","pow","floor","length","d"],"mappings":"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","sourcesContent":["import { IControlOption } from '@antv/l7-core';\nimport { bindAll, DOM, lnglatDistance } from '@antv/l7-utils';\n\nimport Control, { PositionType } from './BaseControl';\nexport interface IScaleControlOption extends IControlOption {\n maxWidth: number;\n metric: boolean;\n updateWhenIdle: boolean;\n imperial: boolean;\n}\nexport default class Scale extends Control {\n private mScale: HTMLElement;\n private iScale: HTMLElement;\n constructor(cfg?: Partial<IScaleControlOption>) {\n super(cfg);\n bindAll(['update'], this);\n }\n\n public getDefault() {\n return {\n position: PositionType.BOTTOMLEFT,\n maxWidth: 100,\n metric: true,\n updateWhenIdle: false,\n imperial: false,\n name: 'scale',\n };\n }\n\n public onAdd() {\n const className = 'l7-control-scale';\n const container = DOM.create('div', className);\n this.addScales(className + '-line', container);\n const { updateWhenIdle } = this.controlOption;\n // TODO: 高德地图和MapBox地图事件不一致问题\n // 高德zoomchange\n this.mapsService.on(updateWhenIdle ? 'moveend' : 'mapmove', this.update);\n this.mapsService.on(updateWhenIdle ? 'zoomend' : 'zoomchange', this.update);\n this.update();\n\n return container;\n }\n public onRemove() {\n const { updateWhenIdle } = this.controlOption;\n this.mapsService.off(\n updateWhenIdle ? 'zoomend' : 'zoomchange',\n this.update,\n );\n this.mapsService.off(updateWhenIdle ? 'moveend' : 'mapmove', this.update);\n }\n public update() {\n const mapsService = this.mapsService;\n const { maxWidth } = this.controlOption;\n const y = mapsService.getSize()[1] / 2;\n\n const p1 = mapsService.containerToLngLat([0, y]);\n const p2 = mapsService.containerToLngLat([maxWidth, y]);\n const maxMeters = lnglatDistance([p1.lng, p1.lat], [p2.lng, p2.lat]);\n this.updateScales(maxMeters);\n }\n public updateScales(maxMeters: number) {\n const { metric, imperial } = this.controlOption;\n if (metric && maxMeters) {\n this.updateMetric(maxMeters);\n }\n if (imperial && maxMeters) {\n this.updateImperial(maxMeters);\n }\n }\n private updateMetric(maxMeters: number) {\n const meters = this.getRoundNum(maxMeters);\n const label = meters < 1000 ? meters + ' m' : meters / 1000 + ' km';\n this.updateScale(this.mScale, label, meters / maxMeters);\n }\n private updateImperial(maxMeters: number) {\n const maxFeet = maxMeters * 3.2808399;\n let maxMiles: number;\n let miles: number;\n let feet: number;\n\n if (maxFeet > 5280) {\n maxMiles = maxFeet / 5280;\n miles = this.getRoundNum(maxMiles);\n this.updateScale(this.iScale, miles + ' mi', miles / maxMiles);\n } else {\n feet = this.getRoundNum(maxFeet);\n this.updateScale(this.iScale, feet + ' ft', feet / maxFeet);\n }\n }\n private updateScale(scale: HTMLElement, text: string, ratio: number) {\n const { maxWidth } = this.controlOption;\n scale.style.width = Math.round(maxWidth * ratio) + 'px';\n scale.innerHTML = text;\n }\n private getRoundNum(num: number) {\n const pow10 = Math.pow(10, (Math.floor(num) + '').length - 1);\n let d = num / pow10;\n\n d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1;\n\n return pow10 * d;\n }\n private addScales(className: string, container: HTMLElement) {\n const { metric, imperial } = this.controlOption;\n if (metric) {\n this.mScale = DOM.create('div', className, container);\n }\n if (imperial) {\n this.iScale = DOM.create('div', className, container);\n }\n }\n}\n"],"file":"scale.js"}
1
+ {"version":3,"sources":["../../src/control/scale.ts"],"names":["bindAll","DOM","lnglatDistance","Control","PositionType","Scale","cfg","position","BOTTOMLEFT","maxWidth","metric","updateWhenIdle","imperial","name","className","container","create","addScales","controlOption","mapsService","on","update","off","y","getSize","p1","containerToLngLat","p2","maxMeters","lng","lat","updateScales","updateMetric","updateImperial","meters","getRoundNum","label","updateScale","mScale","maxFeet","maxMiles","miles","feet","iScale","scale","text","ratio","style","width","Math","round","innerHTML","num","pow10","pow","floor","length","d"],"mappings":";;;;;;;;;;;;AAAA,SAASA,OAAT,EAAkBC,GAAlB,EAAuBC,cAAvB,QAA6C,gBAA7C;AAEA,OAAOC,OAAP,IAAkBC,YAAlB,QAAsC,eAAtC;;IAEqBC,K;;;;;AAGnB,iBAAYC,GAAZ,EAAgD;AAAA;;AAAA;;AAC9C,8BAAMA,GAAN;;AAD8C;;AAAA;;AAE9CN,IAAAA,OAAO,CAAC,CAAC,QAAD,CAAD,gCAAP;AAF8C;AAG/C;;;;WAED,sBAAoB;AAClB,aAAO;AACLO,QAAAA,QAAQ,EAAEH,YAAY,CAACI,UADlB;AAELC,QAAAA,QAAQ,EAAE,GAFL;AAGLC,QAAAA,MAAM,EAAE,IAHH;AAILC,QAAAA,cAAc,EAAE,KAJX;AAKLC,QAAAA,QAAQ,EAAE,KALL;AAMLC,QAAAA,IAAI,EAAE;AAND,OAAP;AAQD;;;WAED,iBAAe;AACb,UAAMC,SAAS,GAAG,kBAAlB;AACA,UAAMC,SAAS,GAAGd,GAAG,CAACe,MAAJ,CAAW,KAAX,EAAkBF,SAAlB,CAAlB;AACA,WAAKG,SAAL,CAAeH,SAAS,GAAG,OAA3B,EAAoCC,SAApC;AACA,UAAQJ,cAAR,GAA2B,KAAKO,aAAhC,CAAQP,cAAR;AAGA,WAAKQ,WAAL,CAAiBC,EAAjB,CAAoBT,cAAc,GAAG,SAAH,GAAe,SAAjD,EAA4D,KAAKU,MAAjE;AACA,WAAKF,WAAL,CAAiBC,EAAjB,CAAoBT,cAAc,GAAG,SAAH,GAAe,YAAjD,EAA+D,KAAKU,MAApE;AACA,WAAKA,MAAL;AAEA,aAAON,SAAP;AACD;;;WACD,oBAAkB;AAChB,UAAQJ,cAAR,GAA2B,KAAKO,aAAhC,CAAQP,cAAR;AACA,WAAKQ,WAAL,CAAiBG,GAAjB,CACEX,cAAc,GAAG,SAAH,GAAe,YAD/B,EAEE,KAAKU,MAFP;AAIA,WAAKF,WAAL,CAAiBG,GAAjB,CAAqBX,cAAc,GAAG,SAAH,GAAe,SAAlD,EAA6D,KAAKU,MAAlE;AACD;;;WACD,kBAAgB;AACd,UAAMF,WAAW,GAAG,KAAKA,WAAzB;AACA,UAAQV,QAAR,GAAqB,KAAKS,aAA1B,CAAQT,QAAR;AACA,UAAMc,CAAC,GAAGJ,WAAW,CAACK,OAAZ,GAAsB,CAAtB,IAA2B,CAArC;AAEA,UAAMC,EAAE,GAAGN,WAAW,CAACO,iBAAZ,CAA8B,CAAC,CAAD,EAAIH,CAAJ,CAA9B,CAAX;AACA,UAAMI,EAAE,GAAGR,WAAW,CAACO,iBAAZ,CAA8B,CAACjB,QAAD,EAAWc,CAAX,CAA9B,CAAX;AACA,UAAMK,SAAS,GAAG1B,cAAc,CAAC,CAACuB,EAAE,CAACI,GAAJ,EAASJ,EAAE,CAACK,GAAZ,CAAD,EAAmB,CAACH,EAAE,CAACE,GAAJ,EAASF,EAAE,CAACG,GAAZ,CAAnB,CAAhC;AACA,WAAKC,YAAL,CAAkBH,SAAlB;AACD;;;WACD,sBAAoBA,SAApB,EAAuC;AACrC,gCAA6B,KAAKV,aAAlC;AAAA,UAAQR,MAAR,uBAAQA,MAAR;AAAA,UAAgBE,QAAhB,uBAAgBA,QAAhB;;AACA,UAAIF,MAAM,IAAIkB,SAAd,EAAyB;AACvB,aAAKI,YAAL,CAAkBJ,SAAlB;AACD;;AACD,UAAIhB,QAAQ,IAAIgB,SAAhB,EAA2B;AACzB,aAAKK,cAAL,CAAoBL,SAApB;AACD;AACF;;;WACD,sBAAqBA,SAArB,EAAwC;AACtC,UAAMM,MAAM,GAAG,KAAKC,WAAL,CAAiBP,SAAjB,CAAf;AACA,UAAMQ,KAAK,GAAGF,MAAM,GAAG,IAAT,GAAgBA,MAAM,GAAG,IAAzB,GAAgCA,MAAM,GAAG,IAAT,GAAgB,KAA9D;AACA,WAAKG,WAAL,CAAiB,KAAKC,MAAtB,EAA8BF,KAA9B,EAAqCF,MAAM,GAAGN,SAA9C;AACD;;;WACD,wBAAuBA,SAAvB,EAA0C;AACxC,UAAMW,OAAO,GAAGX,SAAS,GAAG,SAA5B;AACA,UAAIY,QAAJ;AACA,UAAIC,KAAJ;AACA,UAAIC,IAAJ;;AAEA,UAAIH,OAAO,GAAG,IAAd,EAAoB;AAClBC,QAAAA,QAAQ,GAAGD,OAAO,GAAG,IAArB;AACAE,QAAAA,KAAK,GAAG,KAAKN,WAAL,CAAiBK,QAAjB,CAAR;AACA,aAAKH,WAAL,CAAiB,KAAKM,MAAtB,EAA8BF,KAAK,GAAG,KAAtC,EAA6CA,KAAK,GAAGD,QAArD;AACD,OAJD,MAIO;AACLE,QAAAA,IAAI,GAAG,KAAKP,WAAL,CAAiBI,OAAjB,CAAP;AACA,aAAKF,WAAL,CAAiB,KAAKM,MAAtB,EAA8BD,IAAI,GAAG,KAArC,EAA4CA,IAAI,GAAGH,OAAnD;AACD;AACF;;;WACD,qBAAoBK,KAApB,EAAwCC,IAAxC,EAAsDC,KAAtD,EAAqE;AACnE,UAAQrC,QAAR,GAAqB,KAAKS,aAA1B,CAAQT,QAAR;AACAmC,MAAAA,KAAK,CAACG,KAAN,CAAYC,KAAZ,GAAoBC,IAAI,CAACC,KAAL,CAAWzC,QAAQ,GAAGqC,KAAtB,IAA+B,IAAnD;AACAF,MAAAA,KAAK,CAACO,SAAN,GAAkBN,IAAlB;AACD;;;WACD,qBAAoBO,GAApB,EAAiC;AAC/B,UAAMC,KAAK,GAAGJ,IAAI,CAACK,GAAL,CAAS,EAAT,EAAa,CAACL,IAAI,CAACM,KAAL,CAAWH,GAAX,IAAkB,EAAnB,EAAuBI,MAAvB,GAAgC,CAA7C,CAAd;AACA,UAAIC,CAAC,GAAGL,GAAG,GAAGC,KAAd;AAEAI,MAAAA,CAAC,GAAGA,CAAC,IAAI,EAAL,GAAU,EAAV,GAAeA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAaA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAaA,CAAC,IAAI,CAAL,GAAS,CAAT,GAAa,CAA1D;AAEA,aAAOJ,KAAK,GAAGI,CAAf;AACD;;;WACD,mBAAkB3C,SAAlB,EAAqCC,SAArC,EAA6D;AAC3D,iCAA6B,KAAKG,aAAlC;AAAA,UAAQR,MAAR,wBAAQA,MAAR;AAAA,UAAgBE,QAAhB,wBAAgBA,QAAhB;;AACA,UAAIF,MAAJ,EAAY;AACV,aAAK4B,MAAL,GAAcrC,GAAG,CAACe,MAAJ,CAAW,KAAX,EAAkBF,SAAlB,EAA6BC,SAA7B,CAAd;AACD;;AACD,UAAIH,QAAJ,EAAc;AACZ,aAAK+B,MAAL,GAAc1C,GAAG,CAACe,MAAJ,CAAW,KAAX,EAAkBF,SAAlB,EAA6BC,SAA7B,CAAd;AACD;AACF;;;;EApGgCZ,O;;SAAdE,K","sourcesContent":["import { bindAll, DOM, lnglatDistance } from '@antv/l7-utils';\nimport { IScaleControlOption } from '../interface';\nimport Control, { PositionType } from './BaseControl';\n\nexport default class Scale extends Control {\n private mScale: HTMLElement;\n private iScale: HTMLElement;\n constructor(cfg?: Partial<IScaleControlOption>) {\n super(cfg);\n bindAll(['update'], this);\n }\n\n public getDefault() {\n return {\n position: PositionType.BOTTOMLEFT,\n maxWidth: 100,\n metric: true,\n updateWhenIdle: false,\n imperial: false,\n name: 'scale',\n };\n }\n\n public onAdd() {\n const className = 'l7-control-scale';\n const container = DOM.create('div', className);\n this.addScales(className + '-line', container);\n const { updateWhenIdle } = this.controlOption;\n // TODO: 高德地图和MapBox地图事件不一致问题\n // 高德zoomchange\n this.mapsService.on(updateWhenIdle ? 'moveend' : 'mapmove', this.update);\n this.mapsService.on(updateWhenIdle ? 'zoomend' : 'zoomchange', this.update);\n this.update();\n\n return container;\n }\n public onRemove() {\n const { updateWhenIdle } = this.controlOption;\n this.mapsService.off(\n updateWhenIdle ? 'zoomend' : 'zoomchange',\n this.update,\n );\n this.mapsService.off(updateWhenIdle ? 'moveend' : 'mapmove', this.update);\n }\n public update() {\n const mapsService = this.mapsService;\n const { maxWidth } = this.controlOption;\n const y = mapsService.getSize()[1] / 2;\n\n const p1 = mapsService.containerToLngLat([0, y]);\n const p2 = mapsService.containerToLngLat([maxWidth, y]);\n const maxMeters = lnglatDistance([p1.lng, p1.lat], [p2.lng, p2.lat]);\n this.updateScales(maxMeters);\n }\n public updateScales(maxMeters: number) {\n const { metric, imperial } = this.controlOption;\n if (metric && maxMeters) {\n this.updateMetric(maxMeters);\n }\n if (imperial && maxMeters) {\n this.updateImperial(maxMeters);\n }\n }\n private updateMetric(maxMeters: number) {\n const meters = this.getRoundNum(maxMeters);\n const label = meters < 1000 ? meters + ' m' : meters / 1000 + ' km';\n this.updateScale(this.mScale, label, meters / maxMeters);\n }\n private updateImperial(maxMeters: number) {\n const maxFeet = maxMeters * 3.2808399;\n let maxMiles: number;\n let miles: number;\n let feet: number;\n\n if (maxFeet > 5280) {\n maxMiles = maxFeet / 5280;\n miles = this.getRoundNum(maxMiles);\n this.updateScale(this.iScale, miles + ' mi', miles / maxMiles);\n } else {\n feet = this.getRoundNum(maxFeet);\n this.updateScale(this.iScale, feet + ' ft', feet / maxFeet);\n }\n }\n private updateScale(scale: HTMLElement, text: string, ratio: number) {\n const { maxWidth } = this.controlOption;\n scale.style.width = Math.round(maxWidth * ratio) + 'px';\n scale.innerHTML = text;\n }\n private getRoundNum(num: number) {\n const pow10 = Math.pow(10, (Math.floor(num) + '').length - 1);\n let d = num / pow10;\n\n d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1;\n\n return pow10 * d;\n }\n private addScales(className: string, container: HTMLElement) {\n const { metric, imperial } = this.controlOption;\n if (metric) {\n this.mScale = DOM.create('div', className, container);\n }\n if (imperial) {\n this.iScale = DOM.create('div', className, container);\n }\n }\n}\n"],"file":"scale.js"}
@@ -1,11 +1,5 @@
1
- import { IControlOption } from '@antv/l7-core';
1
+ import { IZoomControlOption } from '../interface';
2
2
  import Control, { PositionType } from './BaseControl';
3
- export interface IZoomControlOption extends IControlOption {
4
- zoomInText: string;
5
- zoomInTitle: string;
6
- zoomOutText: string;
7
- zoomOutTitle: string;
8
- }
9
3
  export default class Zoom extends Control {
10
4
  private disabled;
11
5
  private zoomInButton;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/control/zoom.ts"],"names":["bindAll","DOM","Control","PositionType","Zoom","cfg","position","TOPLEFT","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","name","zoomName","container","create","zoomInButton","createButton","controlOption","zoomIn","zoomOutButton","zoomOut","mapsService","on","updateDisabled","off","disabled","getZoom","getMaxZoom","getMinZoom","html","tile","className","fn","link","innerHTML","title","href","addEventListener","removeClass","addClass"],"mappings":"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","sourcesContent":["import { IControlOption } from '@antv/l7-core';\nimport { bindAll, DOM } from '@antv/l7-utils';\nimport Control, { PositionType } from './BaseControl';\nexport interface IZoomControlOption extends IControlOption {\n zoomInText: string;\n zoomInTitle: string;\n zoomOutText: string;\n zoomOutTitle: string;\n}\nexport default class Zoom extends Control {\n private disabled: boolean;\n private zoomInButton: HTMLElement;\n private zoomOutButton: HTMLElement;\n\n constructor(cfg?: Partial<IZoomControlOption>) {\n super(cfg);\n bindAll(['updateDisabled', 'zoomIn', 'zoomOut'], this);\n }\n public getDefault() {\n return {\n position: PositionType.TOPLEFT,\n zoomInText: '+',\n zoomInTitle: 'Zoom in',\n zoomOutText: '&#x2212;',\n zoomOutTitle: 'Zoom out',\n name: 'zoom',\n };\n }\n\n public onAdd(): HTMLElement {\n const zoomName = 'l7-control-zoom';\n const container = DOM.create('div', zoomName + ' l7-bar');\n\n this.zoomInButton = this.createButton(\n this.controlOption.zoomInText,\n this.controlOption.zoomInTitle,\n zoomName + '-in',\n container,\n this.zoomIn,\n );\n this.zoomOutButton = this.createButton(\n this.controlOption.zoomOutText,\n this.controlOption.zoomOutTitle,\n zoomName + '-out',\n container,\n this.zoomOut,\n );\n this.mapsService.on('zoomend', this.updateDisabled);\n this.mapsService.on('zoomchange', this.updateDisabled);\n this.updateDisabled();\n return container;\n }\n\n public onRemove() {\n this.mapsService.off('zoomend', this.updateDisabled);\n this.mapsService.off('zoomchange', this.updateDisabled);\n }\n\n public disable() {\n this.disabled = true;\n this.updateDisabled();\n return this;\n }\n\n public enable() {\n this.disabled = false;\n this.updateDisabled();\n return this;\n }\n\n private zoomIn() {\n if (\n !this.disabled &&\n this.mapsService.getZoom() < this.mapsService.getMaxZoom()\n ) {\n this.mapsService.zoomIn();\n }\n }\n private zoomOut() {\n if (\n !this.disabled &&\n this.mapsService.getZoom() > this.mapsService.getMinZoom()\n ) {\n this.mapsService.zoomOut();\n }\n }\n private createButton(\n html: string,\n tile: string,\n className: string,\n container: HTMLElement,\n fn: (...arg: any[]) => any,\n ) {\n const link = DOM.create('a', className, container) as HTMLLinkElement;\n link.innerHTML = html;\n link.title = tile;\n link.href = 'javascript:void(0)';\n link.addEventListener('click', fn);\n return link;\n }\n private updateDisabled() {\n const mapsService = this.mapsService;\n const className = 'l7-disabled';\n DOM.removeClass(this.zoomInButton, className);\n DOM.removeClass(this.zoomOutButton, className);\n if (this.disabled || mapsService.getZoom() <= mapsService.getMinZoom()) {\n DOM.addClass(this.zoomOutButton, className);\n }\n if (this.disabled || mapsService.getZoom() >= mapsService.getMaxZoom()) {\n DOM.addClass(this.zoomInButton, className);\n }\n }\n}\n"],"file":"zoom.js"}
1
+ {"version":3,"sources":["../../src/control/zoom.ts"],"names":["bindAll","DOM","Control","PositionType","Zoom","cfg","position","TOPLEFT","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","name","zoomName","container","create","zoomInButton","createButton","controlOption","zoomIn","zoomOutButton","zoomOut","mapsService","on","updateDisabled","off","disabled","getZoom","getMaxZoom","getMinZoom","html","tile","className","fn","link","innerHTML","title","href","addEventListener","removeClass","addClass"],"mappings":";;;;;;;;;;;;AAAA,SAASA,OAAT,EAAkBC,GAAlB,QAA6B,gBAA7B;AAEA,OAAOC,OAAP,IAAkBC,YAAlB,QAAsC,eAAtC;;IAEqBC,I;;;;;AAKnB,gBAAYC,GAAZ,EAA+C;AAAA;;AAAA;;AAC7C,8BAAMA,GAAN;;AAD6C;;AAAA;;AAAA;;AAE7CL,IAAAA,OAAO,CAAC,CAAC,gBAAD,EAAmB,QAAnB,EAA6B,SAA7B,CAAD,gCAAP;AAF6C;AAG9C;;;;WACD,sBAAoB;AAClB,aAAO;AACLM,QAAAA,QAAQ,EAAEH,YAAY,CAACI,OADlB;AAELC,QAAAA,UAAU,EAAE,GAFP;AAGLC,QAAAA,WAAW,EAAE,SAHR;AAILC,QAAAA,WAAW,EAAE,UAJR;AAKLC,QAAAA,YAAY,EAAE,UALT;AAMLC,QAAAA,IAAI,EAAE;AAND,OAAP;AAQD;;;WAED,iBAA4B;AAC1B,UAAMC,QAAQ,GAAG,iBAAjB;AACA,UAAMC,SAAS,GAAGb,GAAG,CAACc,MAAJ,CAAW,KAAX,EAAkBF,QAAQ,GAAG,SAA7B,CAAlB;AAEA,WAAKG,YAAL,GAAoB,KAAKC,YAAL,CAClB,KAAKC,aAAL,CAAmBV,UADD,EAElB,KAAKU,aAAL,CAAmBT,WAFD,EAGlBI,QAAQ,GAAG,KAHO,EAIlBC,SAJkB,EAKlB,KAAKK,MALa,CAApB;AAOA,WAAKC,aAAL,GAAqB,KAAKH,YAAL,CACnB,KAAKC,aAAL,CAAmBR,WADA,EAEnB,KAAKQ,aAAL,CAAmBP,YAFA,EAGnBE,QAAQ,GAAG,MAHQ,EAInBC,SAJmB,EAKnB,KAAKO,OALc,CAArB;AAOA,WAAKC,WAAL,CAAiBC,EAAjB,CAAoB,SAApB,EAA+B,KAAKC,cAApC;AACA,WAAKF,WAAL,CAAiBC,EAAjB,CAAoB,YAApB,EAAkC,KAAKC,cAAvC;AACA,WAAKA,cAAL;AACA,aAAOV,SAAP;AACD;;;WAED,oBAAkB;AAChB,WAAKQ,WAAL,CAAiBG,GAAjB,CAAqB,SAArB,EAAgC,KAAKD,cAArC;AACA,WAAKF,WAAL,CAAiBG,GAAjB,CAAqB,YAArB,EAAmC,KAAKD,cAAxC;AACD;;;WAED,mBAAiB;AACf,WAAKE,QAAL,GAAgB,IAAhB;AACA,WAAKF,cAAL;AACA,aAAO,IAAP;AACD;;;WAED,kBAAgB;AACd,WAAKE,QAAL,GAAgB,KAAhB;AACA,WAAKF,cAAL;AACA,aAAO,IAAP;AACD;;;WAED,kBAAiB;AACf,UACE,CAAC,KAAKE,QAAN,IACA,KAAKJ,WAAL,CAAiBK,OAAjB,KAA6B,KAAKL,WAAL,CAAiBM,UAAjB,EAF/B,EAGE;AACA,aAAKN,WAAL,CAAiBH,MAAjB;AACD;AACF;;;WACD,mBAAkB;AAChB,UACE,CAAC,KAAKO,QAAN,IACA,KAAKJ,WAAL,CAAiBK,OAAjB,KAA6B,KAAKL,WAAL,CAAiBO,UAAjB,EAF/B,EAGE;AACA,aAAKP,WAAL,CAAiBD,OAAjB;AACD;AACF;;;WACD,sBACES,IADF,EAEEC,IAFF,EAGEC,SAHF,EAIElB,SAJF,EAKEmB,EALF,EAME;AACA,UAAMC,IAAI,GAAGjC,GAAG,CAACc,MAAJ,CAAW,GAAX,EAAgBiB,SAAhB,EAA2BlB,SAA3B,CAAb;AACAoB,MAAAA,IAAI,CAACC,SAAL,GAAiBL,IAAjB;AACAI,MAAAA,IAAI,CAACE,KAAL,GAAaL,IAAb;AACAG,MAAAA,IAAI,CAACG,IAAL,GAAY,oBAAZ;AACAH,MAAAA,IAAI,CAACI,gBAAL,CAAsB,OAAtB,EAA+BL,EAA/B;AACA,aAAOC,IAAP;AACD;;;WACD,0BAAyB;AACvB,UAAMZ,WAAW,GAAG,KAAKA,WAAzB;AACA,UAAMU,SAAS,GAAG,aAAlB;AACA/B,MAAAA,GAAG,CAACsC,WAAJ,CAAgB,KAAKvB,YAArB,EAAmCgB,SAAnC;AACA/B,MAAAA,GAAG,CAACsC,WAAJ,CAAgB,KAAKnB,aAArB,EAAoCY,SAApC;;AACA,UAAI,KAAKN,QAAL,IAAiBJ,WAAW,CAACK,OAAZ,MAAyBL,WAAW,CAACO,UAAZ,EAA9C,EAAwE;AACtE5B,QAAAA,GAAG,CAACuC,QAAJ,CAAa,KAAKpB,aAAlB,EAAiCY,SAAjC;AACD;;AACD,UAAI,KAAKN,QAAL,IAAiBJ,WAAW,CAACK,OAAZ,MAAyBL,WAAW,CAACM,UAAZ,EAA9C,EAAwE;AACtE3B,QAAAA,GAAG,CAACuC,QAAJ,CAAa,KAAKxB,YAAlB,EAAgCgB,SAAhC;AACD;AACF;;;;EAtG+B9B,O;;SAAbE,I","sourcesContent":["import { bindAll, DOM } from '@antv/l7-utils';\nimport { IZoomControlOption } from '../interface';\nimport Control, { PositionType } from './BaseControl';\n\nexport default class Zoom extends Control {\n private disabled: boolean;\n private zoomInButton: HTMLElement;\n private zoomOutButton: HTMLElement;\n\n constructor(cfg?: Partial<IZoomControlOption>) {\n super(cfg);\n bindAll(['updateDisabled', 'zoomIn', 'zoomOut'], this);\n }\n public getDefault() {\n return {\n position: PositionType.TOPLEFT,\n zoomInText: '+',\n zoomInTitle: 'Zoom in',\n zoomOutText: '&#x2212;',\n zoomOutTitle: 'Zoom out',\n name: 'zoom',\n };\n }\n\n public onAdd(): HTMLElement {\n const zoomName = 'l7-control-zoom';\n const container = DOM.create('div', zoomName + ' l7-bar');\n\n this.zoomInButton = this.createButton(\n this.controlOption.zoomInText,\n this.controlOption.zoomInTitle,\n zoomName + '-in',\n container,\n this.zoomIn,\n );\n this.zoomOutButton = this.createButton(\n this.controlOption.zoomOutText,\n this.controlOption.zoomOutTitle,\n zoomName + '-out',\n container,\n this.zoomOut,\n );\n this.mapsService.on('zoomend', this.updateDisabled);\n this.mapsService.on('zoomchange', this.updateDisabled);\n this.updateDisabled();\n return container;\n }\n\n public onRemove() {\n this.mapsService.off('zoomend', this.updateDisabled);\n this.mapsService.off('zoomchange', this.updateDisabled);\n }\n\n public disable() {\n this.disabled = true;\n this.updateDisabled();\n return this;\n }\n\n public enable() {\n this.disabled = false;\n this.updateDisabled();\n return this;\n }\n\n private zoomIn() {\n if (\n !this.disabled &&\n this.mapsService.getZoom() < this.mapsService.getMaxZoom()\n ) {\n this.mapsService.zoomIn();\n }\n }\n private zoomOut() {\n if (\n !this.disabled &&\n this.mapsService.getZoom() > this.mapsService.getMinZoom()\n ) {\n this.mapsService.zoomOut();\n }\n }\n private createButton(\n html: string,\n tile: string,\n className: string,\n container: HTMLElement,\n fn: (...arg: any[]) => any,\n ) {\n const link = DOM.create('a', className, container) as HTMLLinkElement;\n link.innerHTML = html;\n link.title = tile;\n link.href = 'javascript:void(0)';\n link.addEventListener('click', fn);\n return link;\n }\n private updateDisabled() {\n const mapsService = this.mapsService;\n const className = 'l7-disabled';\n DOM.removeClass(this.zoomInButton, className);\n DOM.removeClass(this.zoomOutButton, className);\n if (this.disabled || mapsService.getZoom() <= mapsService.getMinZoom()) {\n DOM.addClass(this.zoomOutButton, className);\n }\n if (this.disabled || mapsService.getZoom() >= mapsService.getMaxZoom()) {\n DOM.addClass(this.zoomInButton, className);\n }\n }\n}\n"],"file":"zoom.js"}
package/es/index.d.ts CHANGED
@@ -4,7 +4,8 @@ import Logo from './control/logo';
4
4
  import Scale from './control/scale';
5
5
  import Zoom from './control/zoom';
6
6
  import Marker from './marker';
7
- import MarkerLayer from './markerlayer';
7
+ import MarkerLayer from './marker-layer';
8
8
  import Popup from './popup';
9
9
  import './css/l7.css';
10
10
  export { Control, Logo, Scale, Zoom, Layers, Marker, Popup, MarkerLayer };
11
+ export * from './interface';
package/es/index.js CHANGED
@@ -4,7 +4,7 @@ import Logo from './control/logo';
4
4
  import Scale from './control/scale';
5
5
  import Zoom from './control/zoom';
6
6
  import Marker from './marker';
7
- import MarkerLayer from './markerlayer';
7
+ import MarkerLayer from './marker-layer';
8
8
  import Popup from './popup';
9
9
 
10
10
  function loadStyles(css, doc) {
@@ -47,6 +47,7 @@ function loadStyles(css, doc) {
47
47
  return style;
48
48
  }
49
49
 
50
- loadStyles(".l7-marker-container {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: absolute;\n}\n\n.l7-marker {\n position: absolute !important;\n top: 0;\n left: 0;\n z-index: 5;\n cursor: pointer;\n}\n\n.l7-marker-cluster {\n background-clip: padding-box;\n border-radius: 20px;\n background-color: rgba(181, 226, 140, 0.6);\n width: 40px;\n height: 40px;\n}\n.l7-marker-cluster div {\n width: 30px;\n height: 30px;\n margin-left: 5px;\n margin-top: 5px;\n text-align: center;\n border-radius: 15px;\n font: 12px 'Helvetica Neue', Arial, Helvetica, sans-serif;\n background-color: rgba(110, 204, 57, 0.6);\n}\n.l7-marker-cluster span {\n line-height: 30px;\n}\n\n.l7-popup-anchor-bottom,\n.l7-popup-anchor-bottom-left,\n.l7-popup-anchor-bottom-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 5px;\n}\n.l7-popup-anchor-top,\n.l7-popup-anchor-top-left,\n.l7-popup-anchor-top-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-popup-anchor-left {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.l7-popup-anchor-right {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n}\n.l7-popup {\n position: absolute;\n top: 0;\n left: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n will-change: transform;\n pointer-events: none;\n z-index: 5;\n}\n.l7-popup-tip {\n width: 0;\n height: 0;\n border: 10px solid transparent;\n z-index: 1;\n}\n.l7-popup-anchor-top .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-top: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-top: none;\n border-left: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-top: none;\n border-right: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-bottom .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-bottom: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-bottom: none;\n border-left: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-bottom: none;\n border-right: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-left .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-left: none;\n border-right-color: #fff;\n}\n\n.l7-popup-anchor-right .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-right: none;\n border-left-color: #fff;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n padding: 0;\n font-size: 25px;\n line-height: 20px;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n.l7-popup-anchor-top-left .l7-popup-content {\n border-top-left-radius: 0;\n}\n\n.l7-popup-anchor-top-right .l7-popup-content {\n border-top-right-radius: 0;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-content {\n border-bottom-left-radius: 0;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-content {\n border-bottom-right-radius: 0;\n}\n\n.l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-track-pointer * {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.l7-map:hover .l7-popup-track-pointer {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n\n.l7-map:active .l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* general toolbar styles */\n\n.l7-bar {\n -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n border-radius: 4px;\n}\n.l7-bar a,\n.l7-bar a:hover {\n background-color: #fff;\n width: 30px;\n height: 30px;\n font-size: 20px;\n display: block;\n text-align: center;\n text-decoration: none;\n color: #8e9dab;\n}\n.l7-bar a,\n.l7-control-layers-toggle {\n background-position: 50% 50%;\n background-repeat: no-repeat;\n display: block;\n}\n.l7-bar a:hover {\n background-color: #f4f4f4;\n}\n.l7-bar a:first-child {\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n}\n.l7-bar a:last-child {\n border-bottom-left-radius: 2px;\n border-bottom-right-radius: 2px;\n border-bottom: none;\n}\n.l7-bar a.l7-disabled {\n cursor: default;\n background-color: #f4f4f4;\n color: #bbb;\n}\n\n/* control positioning */\n\n.l7-control-container {\n font: 12px/1.5 'Helvetica Neue', Arial, Helvetica, sans-serif;\n}\n.l7-control-hide {\n display: none;\n}\n.l7-control {\n position: relative;\n z-index: 800;\n pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n pointer-events: auto;\n}\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-top,\n.l7-bottom {\n position: absolute;\n z-index: 1000;\n pointer-events: none;\n}\n.l7-top {\n top: 0;\n}\n.l7-right {\n right: 0;\n}\n.l7-bottom {\n bottom: 0;\n}\n.l7-left {\n left: 0;\n}\n.l7-center {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.l7-bottom.l7-center,\n.l7-top.l7-center {\n width: 100%;\n}\n.l7-right.l7-center,\n.l7-left.l7-center {\n height: 100%;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-top.l7-center,\n.l7-left.l7-center {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.l7-bottom.l7-center,\n.l7-right.l7-center {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n}\n\n.l7-center .l7-control {\n margin-right: 10px;\n margin-bottom: 10px;\n}\n\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-right .l7-control {\n float: right;\n}\n.l7-top .l7-control {\n margin-top: 10px;\n}\n.l7-bottom .l7-control {\n margin-bottom: 10px;\n}\n.l7-left .l7-control {\n margin-left: 10px;\n}\n.l7-right .l7-control {\n margin-right: 10px;\n}\n\n/* attribution and scale controls */\n\n.l7-control-container .l7-control-attribution {\n background: #fff;\n background: rgba(59, 58, 58, 0.7);\n margin: 0;\n}\n.l7-control-attribution,\n.l7-control-scale-line {\n padding: 0 5px;\n color: #333;\n}\n.l7-control-attribution a {\n text-decoration: none;\n}\n.l7-control-attribution a:hover {\n text-decoration: underline;\n}\n.l7-container .l7-control-attribution,\n.l7-container .l7-control-scale {\n font-size: 11px;\n padding: 5px 5px 2px 5px;\n background: rgba(255, 255, 255, 0.7);\n}\n.l7-left .l7-control-scale {\n margin-left: 5px;\n}\n.l7-bottom .l7-control-scale {\n margin-bottom: 5px;\n}\n.l7-control-scale-line {\n border: 2px solid #000;\n border-top: none;\n color: #000;\n line-height: 1.1;\n padding: 2px 5px 1px;\n font-size: 11px;\n white-space: nowrap;\n overflow: hidden;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n\n background: #fff;\n}\n.l7-control-scale-line:not(:first-child) {\n border-top: 2px solid #777;\n border-bottom: none;\n margin-top: -2px;\n}\n.l7-control-scale-line:not(:first-child):not(:last-child) {\n border-bottom: 2px solid #777;\n}\n\n.l7-touch .l7-control-attribution,\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n border: 2px solid rgba(0, 0, 0, 0.2);\n background-clip: padding-box;\n}\n/*logo */\n\n.l7-ctrl-logo {\n background-size: 100% 100%;\n width: 89px;\n height: 16px;\n margin: 0 0 -3px -3px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n background-repeat: no-repeat;\n cursor: pointer;\n background-image: url('data:image/png;base64,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');\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 2px;\n}\n.l7-control-layers-toggle {\n background-image: url('data:image/png;base64,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');\n width: 30px;\n height: 30px;\n background-size: 20px 20px;\n}\n\n.l7-touch .l7-control-layers-toggle {\n width: 44px;\n height: 44px;\n}\n.l7-control-layers .l7-control-layers-list,\n.l7-control-layers-expanded .l7-control-layers-toggle {\n display: none;\n}\n.l7-control-layers-expanded .l7-control-layers-list {\n display: block;\n position: relative;\n}\n.l7-control-layers-expanded {\n padding: 6px 10px 6px 6px;\n color: #59626b;\n background: #fff;\n}\n.l7-control-layers-scrollbar {\n overflow-y: scroll;\n overflow-x: hidden;\n padding-right: 5px;\n}\n.l7-control-layers-selector {\n margin-top: 2px;\n position: relative;\n top: 1px;\n}\n.l7-control-layers label {\n display: block;\n padding: 8px;\n}\n.l7-control-layers label input[type='radio'],\n.l7-control-layers label input[type='checkbox'] {\n width: 14px;\n height: 14px;\n margin: 0;\n}\n.l7-control-layers-separator {\n height: 0;\n border-top: 1px solid #d8d8d8;\n margin: 5px -10px 5px -6px;\n}\n.mapboxgl-ctrl-logo {\n display: none !important;\n}\n.amap-logo {\n display: none !important;\n}\n");
50
+ loadStyles(".l7-marker-container {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: absolute;\n}\n\n.l7-marker {\n position: absolute !important;\n top: 0;\n left: 0;\n z-index: 5;\n cursor: pointer;\n}\n\n.l7-marker-cluster {\n background-clip: padding-box;\n border-radius: 20px;\n background-color: rgba(181, 226, 140, 0.6);\n width: 40px;\n height: 40px;\n}\n.l7-marker-cluster div {\n width: 30px;\n height: 30px;\n margin-left: 5px;\n margin-top: 5px;\n text-align: center;\n border-radius: 15px;\n font: 12px 'Helvetica Neue', Arial, Helvetica, sans-serif;\n background-color: rgba(110, 204, 57, 0.6);\n}\n.l7-marker-cluster span {\n line-height: 30px;\n}\n\n.l7-popup-anchor-bottom,\n.l7-popup-anchor-bottom-left,\n.l7-popup-anchor-bottom-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 5px;\n}\n.l7-popup-anchor-top,\n.l7-popup-anchor-top-left,\n.l7-popup-anchor-top-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-popup-anchor-left {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.l7-popup-anchor-right {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n}\n.l7-popup {\n position: absolute;\n top: 0;\n left: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n will-change: transform;\n pointer-events: none;\n z-index: 5;\n}\n.l7-popup-tip {\n width: 0;\n height: 0;\n border: 10px solid transparent;\n z-index: 1;\n}\n.l7-popup-anchor-top .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-top: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-top: none;\n border-left: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-top: none;\n border-right: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-bottom .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-bottom: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-bottom: none;\n border-left: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-bottom: none;\n border-right: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-left .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-left: none;\n border-right-color: #fff;\n}\n\n.l7-popup-anchor-right .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-right: none;\n border-left-color: #fff;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n padding: 0;\n font-size: 25px;\n line-height: 20px;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n.l7-popup-anchor-top-left .l7-popup-content {\n border-top-left-radius: 0;\n}\n\n.l7-popup-anchor-top-right .l7-popup-content {\n border-top-right-radius: 0;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-content {\n border-bottom-left-radius: 0;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-content {\n border-bottom-right-radius: 0;\n}\n\n.l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-track-pointer * {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.l7-map:hover .l7-popup-track-pointer {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n\n.l7-map:active .l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* general toolbar styles */\n\n.l7-bar {\n -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);\n box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);\n border-radius: 4px;\n}\n.l7-bar a,\n.l7-bar a:hover {\n background-color: #fff;\n width: 30px;\n height: 30px;\n font-size: 20px;\n display: block;\n text-align: center;\n text-decoration: none;\n color: #8e9dab;\n}\n.l7-bar a,\n.l7-control-layers-toggle {\n background-position: 50% 50%;\n background-repeat: no-repeat;\n display: block;\n}\n.l7-bar a:hover {\n background-color: #f4f4f4;\n}\n.l7-bar a:first-child {\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n}\n.l7-bar a:last-child {\n border-bottom-left-radius: 2px;\n border-bottom-right-radius: 2px;\n border-bottom: none;\n}\n.l7-bar a.l7-disabled {\n cursor: default;\n background-color: #f4f4f4;\n color: #bbb;\n}\n\n/* control positioning */\n\n.l7-control-container {\n font: 12px/1.5 'Helvetica Neue', Arial, Helvetica, sans-serif;\n}\n.l7-control-hide {\n display: none;\n}\n.l7-control {\n position: relative;\n z-index: 800;\n pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n pointer-events: auto;\n}\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-top,\n.l7-bottom {\n position: absolute;\n z-index: 1000;\n pointer-events: none;\n}\n.l7-top {\n top: 0;\n}\n.l7-right {\n right: 0;\n}\n.l7-bottom {\n bottom: 0;\n}\n.l7-left {\n left: 0;\n}\n.l7-center {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.l7-bottom.l7-center,\n.l7-top.l7-center {\n width: 100%;\n}\n.l7-right.l7-center,\n.l7-left.l7-center {\n height: 100%;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-top.l7-center,\n.l7-left.l7-center {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.l7-bottom.l7-center,\n.l7-right.l7-center {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n}\n\n.l7-center .l7-control {\n margin-right: 10px;\n margin-bottom: 10px;\n}\n\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-right .l7-control {\n float: right;\n}\n.l7-top .l7-control {\n margin-top: 10px;\n}\n.l7-bottom .l7-control {\n margin-bottom: 10px;\n}\n.l7-left .l7-control {\n margin-left: 10px;\n}\n.l7-right .l7-control {\n margin-right: 10px;\n}\n\n/* attribution and scale controls */\n\n.l7-control-container .l7-control-attribution {\n background: #fff;\n background: rgba(59, 58, 58, 0.7);\n margin: 0;\n}\n.l7-control-attribution,\n.l7-control-scale-line {\n padding: 0 5px;\n color: #333;\n}\n.l7-control-attribution a {\n text-decoration: none;\n}\n.l7-control-attribution a:hover {\n text-decoration: underline;\n}\n.l7-container .l7-control-attribution,\n.l7-container .l7-control-scale {\n font-size: 11px;\n padding: 5px 5px 2px 5px;\n background: rgba(255, 255, 255, 0.7);\n}\n.l7-left .l7-control-scale {\n margin-left: 5px;\n}\n.l7-bottom .l7-control-scale {\n margin-bottom: 5px;\n}\n.l7-control-scale-line {\n border: 2px solid #000;\n border-top: none;\n color: #000;\n line-height: 1.1;\n padding: 2px 5px 1px;\n font-size: 11px;\n white-space: nowrap;\n overflow: hidden;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n\n background: #fff;\n}\n.l7-control-scale-line:not(:first-child) {\n border-top: 2px solid #777;\n border-bottom: none;\n margin-top: -2px;\n}\n.l7-control-scale-line:not(:first-child):not(:last-child) {\n border-bottom: 2px solid #777;\n}\n\n.l7-touch .l7-control-attribution,\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n border: 2px solid rgba(0, 0, 0, 0.2);\n background-clip: padding-box;\n}\n/*logo */\n\n.l7-ctrl-logo {\n background-size: 100% 100%;\n width: 89px;\n height: 16px;\n margin: 0 0 -3px -3px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n background-repeat: no-repeat;\n cursor: pointer;\n background-image: url('data:image/png;base64,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');\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 2px;\n}\n.l7-control-layers-toggle {\n background-image: url('data:image/png;base64,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');\n width: 30px;\n height: 30px;\n background-size: 20px 20px;\n}\n\n.l7-touch .l7-control-layers-toggle {\n width: 44px;\n height: 44px;\n}\n.l7-control-layers .l7-control-layers-list,\n.l7-control-layers-expanded .l7-control-layers-toggle {\n display: none;\n}\n.l7-control-layers-expanded .l7-control-layers-list {\n display: block;\n position: relative;\n}\n.l7-control-layers-expanded {\n padding: 6px 10px 6px 6px;\n color: #59626b;\n background: #fff;\n}\n.l7-control-layers-scrollbar {\n overflow-y: scroll;\n overflow-x: hidden;\n padding-right: 5px;\n}\n.l7-control-layers-selector {\n margin-top: 2px;\n position: relative;\n top: 1px;\n}\n.l7-control-layers label {\n display: block;\n padding: 8px;\n}\n.l7-control-layers label input[type='radio'],\n.l7-control-layers label input[type='checkbox'] {\n width: 14px;\n height: 14px;\n margin: 0;\n}\n.l7-control-layers-separator {\n height: 0;\n border-top: 1px solid #d8d8d8;\n margin: 5px -10px 5px -6px;\n}\n.mapboxgl-ctrl-logo {\n display: none !important;\n}\n.amap-logo {\n display: none !important;\n}\n");
51
51
  export { Control, Logo, Scale, Zoom, Layers, Marker, Popup, MarkerLayer };
52
+ export * from './interface';
52
53
  //# sourceMappingURL=index.js.map
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["Control","Layers","Logo","Scale","Zoom","Marker","MarkerLayer","Popup"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,uBAApB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,OAAOC,IAAP,MAAiB,gBAAjB;AACA,OAAOC,KAAP,MAAkB,iBAAlB;AACA,OAAOC,IAAP,MAAiB,gBAAjB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AACA,OAAOC,WAAP,MAAwB,eAAxB;AACA,OAAOC,KAAP,MAAkB,SAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,SAASP,OAAT,EAAkBE,IAAlB,EAAwBC,KAAxB,EAA+BC,IAA/B,EAAqCH,MAArC,EAA6CI,MAA7C,EAAqDE,KAArD,EAA4DD,WAA5D","sourcesContent":["import Control from './control/BaseControl';\nimport Layers from './control/layer';\nimport Logo from './control/logo';\nimport Scale from './control/scale';\nimport Zoom from './control/zoom';\nimport Marker from './marker';\nimport MarkerLayer from './markerlayer';\nimport Popup from './popup';\n\n// 引入样式\n// TODO: 使用 Less 或者 Sass,每个组件单独引用自身样式\nimport './css/l7.css';\n\nexport { Control, Logo, Scale, Zoom, Layers, Marker, Popup, MarkerLayer };\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["Control","Layers","Logo","Scale","Zoom","Marker","MarkerLayer","Popup"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,uBAApB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,OAAOC,IAAP,MAAiB,gBAAjB;AACA,OAAOC,KAAP,MAAkB,iBAAlB;AACA,OAAOC,IAAP,MAAiB,gBAAjB;AACA,OAAOC,MAAP,MAAmB,UAAnB;AACA,OAAOC,WAAP,MAAwB,gBAAxB;AACA,OAAOC,KAAP,MAAkB,SAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,SAASP,OAAT,EAAkBE,IAAlB,EAAwBC,KAAxB,EAA+BC,IAA/B,EAAqCH,MAArC,EAA6CI,MAA7C,EAAqDE,KAArD,EAA4DD,WAA5D;AAEA,cAAc,aAAd","sourcesContent":["import Control from './control/BaseControl';\nimport Layers from './control/layer';\nimport Logo from './control/logo';\nimport Scale from './control/scale';\nimport Zoom from './control/zoom';\nimport Marker from './marker';\nimport MarkerLayer from './marker-layer';\nimport Popup from './popup';\n\n// 引入样式\n// TODO: 使用 Less 或者 Sass,每个组件单独引用自身样式\nimport './css/l7.css';\n\nexport { Control, Logo, Scale, Zoom, Layers, Marker, Popup, MarkerLayer };\n\nexport * from './interface';\n"],"file":"index.js"}
@@ -0,0 +1,37 @@
1
+ import { IControlOption } from '@antv/l7-core';
2
+ export interface ILayerControlOption extends IControlOption {
3
+ collapsed: boolean;
4
+ autoZIndex: boolean;
5
+ hideSingleBase: boolean;
6
+ sortLayers: boolean;
7
+ sortFunction: (...args: any[]) => any;
8
+ }
9
+ export interface IScaleControlOption extends IControlOption {
10
+ maxWidth: number;
11
+ metric: boolean;
12
+ updateWhenIdle: boolean;
13
+ imperial: boolean;
14
+ }
15
+ export interface IZoomControlOption extends IControlOption {
16
+ zoomInText: string;
17
+ zoomInTitle: string;
18
+ zoomOutText: string;
19
+ zoomOutTitle: string;
20
+ }
21
+ export interface IMarkerStyleOption {
22
+ element?: (...args: any[]) => any;
23
+ style: {
24
+ [key: string]: any;
25
+ } | ((...args: any[]) => any);
26
+ className: string;
27
+ field?: string;
28
+ method?: 'sum' | 'max' | 'min' | 'mean';
29
+ radius: number;
30
+ maxZoom: number;
31
+ minZoom: number;
32
+ zoom: number;
33
+ }
34
+ export interface IMarkerLayerOption {
35
+ cluster: boolean;
36
+ clusterOption: Partial<IMarkerStyleOption>;
37
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"interface.js"}
@@ -1,24 +1,7 @@
1
1
  import { IMarker } from '@antv/l7-core';
2
2
  import { EventEmitter } from 'eventemitter3';
3
3
  import { Container } from 'inversify';
4
- declare type CallBack = (...args: any[]) => any;
5
- interface IMarkerStyleOption {
6
- element?: CallBack;
7
- style: {
8
- [key: string]: any;
9
- } | CallBack;
10
- className: string;
11
- field?: string;
12
- method?: 'sum' | 'max' | 'min' | 'mean';
13
- radius: number;
14
- maxZoom: number;
15
- minZoom: number;
16
- zoom: number;
17
- }
18
- interface IMarkerLayerOption {
19
- cluster: boolean;
20
- clusterOption: Partial<IMarkerStyleOption>;
21
- }
4
+ import { IMarkerLayerOption } from './interface';
22
5
  export default class MarkerLayer extends EventEmitter {
23
6
  private markers;
24
7
  private markerLayerOption;
@@ -65,4 +48,3 @@ export default class MarkerLayer extends EventEmitter {
65
48
  private update;
66
49
  private generateElement;
67
50
  }
68
- export {};
@@ -328,4 +328,4 @@ var MarkerLayer = function (_EventEmitter) {
328
328
  }(EventEmitter);
329
329
 
330
330
  export { MarkerLayer as default };
331
- //# sourceMappingURL=markerlayer.js.map
331
+ //# sourceMappingURL=marker-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marker-layer.ts"],"names":["TYPES","bindAll","boundsContains","DOM","padBounds","Satistics","EventEmitter","Supercluster","Marker","MarkerLayer","option","markerLayerOption","getDefault","zoom","clusterOption","cluster","radius","maxZoom","minZoom","style","className","scene","mapsService","get","IMapService","initCluster","update","on","addMarkers","marker","addPoint","markers","length","getZoom","bbox","getBounds","Math","floor","getClusterMarker","push","indexOf","markerIndex","splice","map","m","getElement","opacity","clusterMarkers","getMarkers","forEach","addTo","remove","clusterMarker","off","clear","removeAllListeners","id","getLnglat","lng","lat","feature","geometry","type","coordinates","properties","getExtData","marker_id","points","clusterIndex","load","viewBounds","viewBBox","concat","clusterPoint","getClusters","field","method","cluster_id","clusterData","getLeaves","columnData","item","data","column","getColumn","stat","getSatByColumn","fieldName","toFixed","clusterId","limit","Infinity","offset","element","generateElement","bind","setLnglat","abs","el","create","label","span","point_count","text","textContent"],"mappings":"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","sourcesContent":["import { IMapService, IMarker, TYPES } from '@antv/l7-core';\nimport {\n bindAll,\n boundsContains,\n DOM,\n IBounds,\n padBounds,\n Satistics,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { merge } from 'lodash';\n// @ts-ignore\n// tslint:disable-next-line:no-submodule-imports\nimport Supercluster from 'supercluster/dist/supercluster';\nimport { IMarkerLayerOption, IMarkerStyleOption } from './interface';\nimport Marker from './marker';\n\ninterface IPointFeature {\n geometry: {\n type: 'Point';\n coordinates: [number, number];\n };\n properties: any;\n}\n\nexport default class MarkerLayer extends EventEmitter {\n private markers: IMarker[] = [];\n private markerLayerOption: IMarkerLayerOption;\n private clusterIndex: Supercluster;\n private points: IPointFeature[] = [];\n private clusterMarkers: IMarker[] = [];\n private mapsService: IMapService<unknown>;\n private scene: Container;\n private zoom: number;\n private bbox: IBounds;\n\n constructor(option?: Partial<IMarkerLayerOption>) {\n super();\n this.markerLayerOption = merge(this.getDefault(), option);\n bindAll(['update'], this);\n this.zoom = this.markerLayerOption.clusterOption?.zoom || -99;\n }\n public getDefault() {\n return {\n cluster: false,\n clusterOption: {\n radius: 80,\n maxZoom: 20,\n minZoom: 0,\n zoom: -99,\n style: {},\n className: '',\n },\n };\n }\n public addTo(scene: Container) {\n // this.remove();\n this.scene = scene;\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n if (this.markerLayerOption.cluster) {\n this.initCluster();\n this.update();\n // 地图视野变化时,重新计算视野内的聚合点。\n this.mapsService.on('camerachange', this.update); // amap1.x 更新事件\n this.mapsService.on('viewchange', this.update); // amap2.0 更新事件\n }\n this.addMarkers();\n return this;\n }\n public addMarker(marker: IMarker) {\n const cluster = this.markerLayerOption.cluster;\n if (cluster) {\n this.addPoint(marker, this.markers.length);\n if (this.mapsService) {\n // 在新增 marker 的时候需要更新聚合信息(哪怕此时的 zoom 没有发生变化)\n const zoom = this.mapsService.getZoom();\n const bbox = this.mapsService.getBounds();\n this.bbox = padBounds(bbox, 0.5);\n this.zoom = Math.floor(zoom);\n this.getClusterMarker(this.bbox, this.zoom);\n }\n }\n this.markers.push(marker);\n }\n\n public removeMarker(marker: IMarker) {\n this.markers.indexOf(marker);\n const markerIndex = this.markers.indexOf(marker);\n if (markerIndex > -1) {\n this.markers.splice(markerIndex, 1);\n }\n }\n\n /**\n * 隐藏 marker 在每个 marker 上单独修改属性而不是在 markerContainer 上修改(在 markerContainer 修改会有用户在场景加载完之前调用失败的问题)\n */\n public hide() {\n this.markers.map((m) => {\n m.getElement().style.opacity = '0';\n });\n\n this.clusterMarkers.map((m) => {\n m.getElement().style.opacity = '0';\n });\n }\n\n /**\n * 显示 marker\n */\n public show() {\n this.markers.map((m) => {\n m.getElement().style.opacity = '1';\n });\n\n this.clusterMarkers.map((m) => {\n m.getElement().style.opacity = '1';\n });\n }\n\n public getMarkers() {\n const cluster = this.markerLayerOption.cluster;\n return cluster ? this.clusterMarkers : this.markers;\n }\n\n public addMarkers() {\n this.getMarkers().forEach((marker: IMarker) => {\n marker.addTo(this.scene);\n });\n }\n public clear() {\n this.markers.forEach((marker: IMarker) => {\n marker.remove();\n });\n this.clusterMarkers.forEach((clusterMarker: IMarker) => {\n clusterMarker.remove();\n });\n this.mapsService.off('camerachange', this.update);\n this.markers = [];\n this.clusterMarkers = [];\n }\n\n public destroy() {\n this.clear();\n this.removeAllListeners();\n }\n\n private addPoint(marker: IMarker, id: number) {\n const { lng, lat } = marker.getLnglat();\n const feature: IPointFeature = {\n geometry: {\n type: 'Point',\n coordinates: [lng, lat],\n },\n properties: {\n ...marker.getExtData(),\n marker_id: id,\n },\n };\n this.points.push(feature);\n if (this.clusterIndex) {\n // 在新增点的时候需要更新 cluster 的数据\n this.clusterIndex.load(this.points);\n }\n }\n\n private initCluster() {\n if (!this.markerLayerOption.cluster) {\n return;\n }\n const { radius, minZoom = 0, maxZoom } = this.markerLayerOption\n .clusterOption as IMarkerStyleOption;\n this.clusterIndex = new Supercluster({\n radius,\n minZoom,\n maxZoom,\n });\n // @ts-ignore\n this.clusterIndex.load(this.points);\n }\n\n private getClusterMarker(viewBounds: IBounds, zoom: number) {\n const viewBBox = viewBounds[0].concat(viewBounds[1]);\n const clusterPoint = this.clusterIndex.getClusters(viewBBox, zoom);\n this.clusterMarkers.forEach((marker: IMarker) => {\n marker.remove();\n });\n this.clusterMarkers = [];\n clusterPoint.forEach((feature: any) => {\n const { field, method } = this.markerLayerOption.clusterOption;\n // 处理聚合数据\n if (feature.properties && feature.properties?.cluster_id) {\n const clusterData = this.getLeaves(feature.properties?.cluster_id);\n feature.properties.clusterData = clusterData;\n if (field && method) {\n const columnData = clusterData?.map((item: any) => {\n const data = {\n [field]: item.properties[field],\n };\n return data;\n });\n const column = Satistics.getColumn(columnData as any, field);\n const stat = Satistics.getSatByColumn(method, column);\n const fieldName = 'point_' + method;\n feature.properties[fieldName] = stat.toFixed(2);\n }\n }\n const marker = this.clusterMarker(feature);\n this.clusterMarkers.push(marker);\n marker.addTo(this.scene);\n });\n }\n private getLeaves(\n clusterId: number,\n limit: number = Infinity,\n offset: number = 0,\n ) {\n if (!clusterId) {\n return null;\n }\n return this.clusterIndex.getLeaves(clusterId, limit, offset);\n }\n private clusterMarker(feature: any) {\n const clusterOption = this.markerLayerOption.clusterOption;\n\n const {\n element = this.generateElement.bind(this),\n } = clusterOption as IMarkerStyleOption;\n const marker = new Marker({\n element: element(feature),\n }).setLnglat({\n lng: feature.geometry.coordinates[0],\n lat: feature.geometry.coordinates[1],\n });\n return marker;\n }\n private normalMarker(feature: any) {\n const marker_id = feature.properties.marker_id;\n return this.markers[marker_id];\n }\n\n private update() {\n if (!this.mapsService) {\n return;\n }\n const zoom = this.mapsService.getZoom();\n const bbox = this.mapsService.getBounds();\n if (\n !this.bbox ||\n Math.abs(zoom - this.zoom) >= 1 ||\n !boundsContains(this.bbox, bbox)\n ) {\n this.bbox = padBounds(bbox, 0.5);\n this.zoom = Math.floor(zoom);\n this.getClusterMarker(this.bbox, this.zoom);\n }\n }\n\n private generateElement(feature: any) {\n const el = DOM.create('div', 'l7-marker-cluster');\n const label = DOM.create('div', '', el);\n const span = DOM.create('span', '', label);\n const { field, method } = this.markerLayerOption.clusterOption;\n feature.properties.point_count = feature.properties.point_count || 1;\n\n const text =\n field && method\n ? feature.properties['point_' + method] || feature.properties[field]\n : feature.properties.point_count;\n span.textContent = text;\n return el;\n }\n}\n"],"file":"marker-layer.js"}
@@ -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","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 { PositionType } from '@antv/l7-core';\nimport { bindAll, DOM } from '@antv/l7-utils';\nimport { ILayerControlOption } from '../interface';\nimport Control from './BaseControl';\n\ninterface IInputItem extends HTMLInputElement {\n layerId: string;\n}\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 +1 @@
1
- {"version":3,"sources":["../../src/control/logo.ts"],"names":["Logo","position","PositionType","BOTTOMLEFT","name","className","container","DOM","create","anchor","target","rel","href","setAttribute","appendChild","Control"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;;;;;IACqBA,I;;;;;;;;;;;;WACnB,sBAAoB;AAClB,aAAO;AACLC,QAAAA,QAAQ,EAAEC,0BAAaC,UADlB;AAELC,QAAAA,IAAI,EAAE;AAFD,OAAP;AAID;;;WACD,iBAAe;AACb,UAAMC,SAAS,GAAG,iBAAlB;;AACA,UAAMC,SAAS,GAAGC,aAAIC,MAAJ,CAAW,KAAX,EAAkBH,SAAlB,CAAlB;;AACA,UAAMI,MAAuB,GAAGF,aAAIC,MAAJ,CAC9B,GAD8B,EAE9B,cAF8B,CAAhC;;AAIAC,MAAAA,MAAM,CAACC,MAAP,GAAgB,QAAhB;AACAD,MAAAA,MAAM,CAACE,GAAP,GAAa,mBAAb;AACAF,MAAAA,MAAM,CAACG,IAAP,GAAc,4BAAd;AACAH,MAAAA,MAAM,CAACI,YAAP,CAAoB,YAApB,EAAkC,WAAlC;AACAJ,MAAAA,MAAM,CAACI,YAAP,CAAoB,KAApB,EAA2B,mBAA3B;AACAP,MAAAA,SAAS,CAACQ,WAAV,CAAsBL,MAAtB;AACA,aAAOH,SAAP;AACD;;;WAED,oBAAkB;AAChB,aAAO,IAAP;AACD;;;EAzB+BS,oB","sourcesContent":["import { IControlOption } from '@antv/l7-core';\nimport { DOM } from '@antv/l7-utils';\nimport Control, { PositionType } from './BaseControl';\nexport default class Logo extends Control {\n public getDefault() {\n return {\n position: PositionType.BOTTOMLEFT,\n name: 'logo',\n };\n }\n public onAdd() {\n const className = 'l7-control-logo';\n const container = DOM.create('div', className);\n const anchor: HTMLLinkElement = DOM.create(\n 'a',\n 'l7-ctrl-logo',\n ) as HTMLLinkElement;\n anchor.target = '_blank';\n anchor.rel = 'noopener nofollow';\n anchor.href = 'https://antv.alipay.com/l7';\n anchor.setAttribute('aria-label', 'AntV logo');\n anchor.setAttribute('rel', 'noopener nofollow');\n container.appendChild(anchor);\n return container;\n }\n\n public onRemove() {\n return null;\n }\n}\n"],"file":"logo.js"}
1
+ {"version":3,"sources":["../../src/control/logo.ts"],"names":["Logo","position","PositionType","BOTTOMLEFT","name","className","container","DOM","create","anchor","target","rel","href","setAttribute","appendChild","Control"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;;;;;IAEqBA,I;;;;;;;;;;;;WACnB,sBAAoB;AAClB,aAAO;AACLC,QAAAA,QAAQ,EAAEC,0BAAaC,UADlB;AAELC,QAAAA,IAAI,EAAE;AAFD,OAAP;AAID;;;WACD,iBAAe;AACb,UAAMC,SAAS,GAAG,iBAAlB;;AACA,UAAMC,SAAS,GAAGC,aAAIC,MAAJ,CAAW,KAAX,EAAkBH,SAAlB,CAAlB;;AACA,UAAMI,MAAuB,GAAGF,aAAIC,MAAJ,CAC9B,GAD8B,EAE9B,cAF8B,CAAhC;;AAIAC,MAAAA,MAAM,CAACC,MAAP,GAAgB,QAAhB;AACAD,MAAAA,MAAM,CAACE,GAAP,GAAa,mBAAb;AACAF,MAAAA,MAAM,CAACG,IAAP,GAAc,4BAAd;AACAH,MAAAA,MAAM,CAACI,YAAP,CAAoB,YAApB,EAAkC,WAAlC;AACAJ,MAAAA,MAAM,CAACI,YAAP,CAAoB,KAApB,EAA2B,mBAA3B;AACAP,MAAAA,SAAS,CAACQ,WAAV,CAAsBL,MAAtB;AACA,aAAOH,SAAP;AACD;;;WAED,oBAAkB;AAChB,aAAO,IAAP;AACD;;;EAzB+BS,oB","sourcesContent":["import { IControlOption } from '@antv/l7-core';\nimport { DOM } from '@antv/l7-utils';\nimport Control, { PositionType } from './BaseControl';\n\nexport default class Logo extends Control {\n public getDefault() {\n return {\n position: PositionType.BOTTOMLEFT,\n name: 'logo',\n };\n }\n public onAdd() {\n const className = 'l7-control-logo';\n const container = DOM.create('div', className);\n const anchor: HTMLLinkElement = DOM.create(\n 'a',\n 'l7-ctrl-logo',\n ) as HTMLLinkElement;\n anchor.target = '_blank';\n anchor.rel = 'noopener nofollow';\n anchor.href = 'https://antv.alipay.com/l7';\n anchor.setAttribute('aria-label', 'AntV logo');\n anchor.setAttribute('rel', 'noopener nofollow');\n container.appendChild(anchor);\n return container;\n }\n\n public onRemove() {\n return null;\n }\n}\n"],"file":"logo.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/control/scale.ts"],"names":["Scale","cfg","position","PositionType","BOTTOMLEFT","maxWidth","metric","updateWhenIdle","imperial","name","className","container","DOM","create","addScales","controlOption","mapsService","on","update","off","y","getSize","p1","containerToLngLat","p2","maxMeters","lng","lat","updateScales","updateMetric","updateImperial","meters","getRoundNum","label","updateScale","mScale","maxFeet","maxMiles","miles","feet","iScale","scale","text","ratio","style","width","Math","round","innerHTML","num","pow10","pow","floor","length","d","Control"],"mappings":"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","sourcesContent":["import { IControlOption } from '@antv/l7-core';\nimport { bindAll, DOM, lnglatDistance } from '@antv/l7-utils';\n\nimport Control, { PositionType } from './BaseControl';\nexport interface IScaleControlOption extends IControlOption {\n maxWidth: number;\n metric: boolean;\n updateWhenIdle: boolean;\n imperial: boolean;\n}\nexport default class Scale extends Control {\n private mScale: HTMLElement;\n private iScale: HTMLElement;\n constructor(cfg?: Partial<IScaleControlOption>) {\n super(cfg);\n bindAll(['update'], this);\n }\n\n public getDefault() {\n return {\n position: PositionType.BOTTOMLEFT,\n maxWidth: 100,\n metric: true,\n updateWhenIdle: false,\n imperial: false,\n name: 'scale',\n };\n }\n\n public onAdd() {\n const className = 'l7-control-scale';\n const container = DOM.create('div', className);\n this.addScales(className + '-line', container);\n const { updateWhenIdle } = this.controlOption;\n // TODO: 高德地图和MapBox地图事件不一致问题\n // 高德zoomchange\n this.mapsService.on(updateWhenIdle ? 'moveend' : 'mapmove', this.update);\n this.mapsService.on(updateWhenIdle ? 'zoomend' : 'zoomchange', this.update);\n this.update();\n\n return container;\n }\n public onRemove() {\n const { updateWhenIdle } = this.controlOption;\n this.mapsService.off(\n updateWhenIdle ? 'zoomend' : 'zoomchange',\n this.update,\n );\n this.mapsService.off(updateWhenIdle ? 'moveend' : 'mapmove', this.update);\n }\n public update() {\n const mapsService = this.mapsService;\n const { maxWidth } = this.controlOption;\n const y = mapsService.getSize()[1] / 2;\n\n const p1 = mapsService.containerToLngLat([0, y]);\n const p2 = mapsService.containerToLngLat([maxWidth, y]);\n const maxMeters = lnglatDistance([p1.lng, p1.lat], [p2.lng, p2.lat]);\n this.updateScales(maxMeters);\n }\n public updateScales(maxMeters: number) {\n const { metric, imperial } = this.controlOption;\n if (metric && maxMeters) {\n this.updateMetric(maxMeters);\n }\n if (imperial && maxMeters) {\n this.updateImperial(maxMeters);\n }\n }\n private updateMetric(maxMeters: number) {\n const meters = this.getRoundNum(maxMeters);\n const label = meters < 1000 ? meters + ' m' : meters / 1000 + ' km';\n this.updateScale(this.mScale, label, meters / maxMeters);\n }\n private updateImperial(maxMeters: number) {\n const maxFeet = maxMeters * 3.2808399;\n let maxMiles: number;\n let miles: number;\n let feet: number;\n\n if (maxFeet > 5280) {\n maxMiles = maxFeet / 5280;\n miles = this.getRoundNum(maxMiles);\n this.updateScale(this.iScale, miles + ' mi', miles / maxMiles);\n } else {\n feet = this.getRoundNum(maxFeet);\n this.updateScale(this.iScale, feet + ' ft', feet / maxFeet);\n }\n }\n private updateScale(scale: HTMLElement, text: string, ratio: number) {\n const { maxWidth } = this.controlOption;\n scale.style.width = Math.round(maxWidth * ratio) + 'px';\n scale.innerHTML = text;\n }\n private getRoundNum(num: number) {\n const pow10 = Math.pow(10, (Math.floor(num) + '').length - 1);\n let d = num / pow10;\n\n d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1;\n\n return pow10 * d;\n }\n private addScales(className: string, container: HTMLElement) {\n const { metric, imperial } = this.controlOption;\n if (metric) {\n this.mScale = DOM.create('div', className, container);\n }\n if (imperial) {\n this.iScale = DOM.create('div', className, container);\n }\n }\n}\n"],"file":"scale.js"}
1
+ {"version":3,"sources":["../../src/control/scale.ts"],"names":["Scale","cfg","position","PositionType","BOTTOMLEFT","maxWidth","metric","updateWhenIdle","imperial","name","className","container","DOM","create","addScales","controlOption","mapsService","on","update","off","y","getSize","p1","containerToLngLat","p2","maxMeters","lng","lat","updateScales","updateMetric","updateImperial","meters","getRoundNum","label","updateScale","mScale","maxFeet","maxMiles","miles","feet","iScale","scale","text","ratio","style","width","Math","round","innerHTML","num","pow10","pow","floor","length","d","Control"],"mappings":"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","sourcesContent":["import { bindAll, DOM, lnglatDistance } from '@antv/l7-utils';\nimport { IScaleControlOption } from '../interface';\nimport Control, { PositionType } from './BaseControl';\n\nexport default class Scale extends Control {\n private mScale: HTMLElement;\n private iScale: HTMLElement;\n constructor(cfg?: Partial<IScaleControlOption>) {\n super(cfg);\n bindAll(['update'], this);\n }\n\n public getDefault() {\n return {\n position: PositionType.BOTTOMLEFT,\n maxWidth: 100,\n metric: true,\n updateWhenIdle: false,\n imperial: false,\n name: 'scale',\n };\n }\n\n public onAdd() {\n const className = 'l7-control-scale';\n const container = DOM.create('div', className);\n this.addScales(className + '-line', container);\n const { updateWhenIdle } = this.controlOption;\n // TODO: 高德地图和MapBox地图事件不一致问题\n // 高德zoomchange\n this.mapsService.on(updateWhenIdle ? 'moveend' : 'mapmove', this.update);\n this.mapsService.on(updateWhenIdle ? 'zoomend' : 'zoomchange', this.update);\n this.update();\n\n return container;\n }\n public onRemove() {\n const { updateWhenIdle } = this.controlOption;\n this.mapsService.off(\n updateWhenIdle ? 'zoomend' : 'zoomchange',\n this.update,\n );\n this.mapsService.off(updateWhenIdle ? 'moveend' : 'mapmove', this.update);\n }\n public update() {\n const mapsService = this.mapsService;\n const { maxWidth } = this.controlOption;\n const y = mapsService.getSize()[1] / 2;\n\n const p1 = mapsService.containerToLngLat([0, y]);\n const p2 = mapsService.containerToLngLat([maxWidth, y]);\n const maxMeters = lnglatDistance([p1.lng, p1.lat], [p2.lng, p2.lat]);\n this.updateScales(maxMeters);\n }\n public updateScales(maxMeters: number) {\n const { metric, imperial } = this.controlOption;\n if (metric && maxMeters) {\n this.updateMetric(maxMeters);\n }\n if (imperial && maxMeters) {\n this.updateImperial(maxMeters);\n }\n }\n private updateMetric(maxMeters: number) {\n const meters = this.getRoundNum(maxMeters);\n const label = meters < 1000 ? meters + ' m' : meters / 1000 + ' km';\n this.updateScale(this.mScale, label, meters / maxMeters);\n }\n private updateImperial(maxMeters: number) {\n const maxFeet = maxMeters * 3.2808399;\n let maxMiles: number;\n let miles: number;\n let feet: number;\n\n if (maxFeet > 5280) {\n maxMiles = maxFeet / 5280;\n miles = this.getRoundNum(maxMiles);\n this.updateScale(this.iScale, miles + ' mi', miles / maxMiles);\n } else {\n feet = this.getRoundNum(maxFeet);\n this.updateScale(this.iScale, feet + ' ft', feet / maxFeet);\n }\n }\n private updateScale(scale: HTMLElement, text: string, ratio: number) {\n const { maxWidth } = this.controlOption;\n scale.style.width = Math.round(maxWidth * ratio) + 'px';\n scale.innerHTML = text;\n }\n private getRoundNum(num: number) {\n const pow10 = Math.pow(10, (Math.floor(num) + '').length - 1);\n let d = num / pow10;\n\n d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1;\n\n return pow10 * d;\n }\n private addScales(className: string, container: HTMLElement) {\n const { metric, imperial } = this.controlOption;\n if (metric) {\n this.mScale = DOM.create('div', className, container);\n }\n if (imperial) {\n this.iScale = DOM.create('div', className, container);\n }\n }\n}\n"],"file":"scale.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/control/zoom.ts"],"names":["Zoom","cfg","position","PositionType","TOPLEFT","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","name","zoomName","container","DOM","create","zoomInButton","createButton","controlOption","zoomIn","zoomOutButton","zoomOut","mapsService","on","updateDisabled","off","disabled","getZoom","getMaxZoom","getMinZoom","html","tile","className","fn","link","innerHTML","title","href","addEventListener","removeClass","addClass","Control"],"mappings":"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","sourcesContent":["import { IControlOption } from '@antv/l7-core';\nimport { bindAll, DOM } from '@antv/l7-utils';\nimport Control, { PositionType } from './BaseControl';\nexport interface IZoomControlOption extends IControlOption {\n zoomInText: string;\n zoomInTitle: string;\n zoomOutText: string;\n zoomOutTitle: string;\n}\nexport default class Zoom extends Control {\n private disabled: boolean;\n private zoomInButton: HTMLElement;\n private zoomOutButton: HTMLElement;\n\n constructor(cfg?: Partial<IZoomControlOption>) {\n super(cfg);\n bindAll(['updateDisabled', 'zoomIn', 'zoomOut'], this);\n }\n public getDefault() {\n return {\n position: PositionType.TOPLEFT,\n zoomInText: '+',\n zoomInTitle: 'Zoom in',\n zoomOutText: '&#x2212;',\n zoomOutTitle: 'Zoom out',\n name: 'zoom',\n };\n }\n\n public onAdd(): HTMLElement {\n const zoomName = 'l7-control-zoom';\n const container = DOM.create('div', zoomName + ' l7-bar');\n\n this.zoomInButton = this.createButton(\n this.controlOption.zoomInText,\n this.controlOption.zoomInTitle,\n zoomName + '-in',\n container,\n this.zoomIn,\n );\n this.zoomOutButton = this.createButton(\n this.controlOption.zoomOutText,\n this.controlOption.zoomOutTitle,\n zoomName + '-out',\n container,\n this.zoomOut,\n );\n this.mapsService.on('zoomend', this.updateDisabled);\n this.mapsService.on('zoomchange', this.updateDisabled);\n this.updateDisabled();\n return container;\n }\n\n public onRemove() {\n this.mapsService.off('zoomend', this.updateDisabled);\n this.mapsService.off('zoomchange', this.updateDisabled);\n }\n\n public disable() {\n this.disabled = true;\n this.updateDisabled();\n return this;\n }\n\n public enable() {\n this.disabled = false;\n this.updateDisabled();\n return this;\n }\n\n private zoomIn() {\n if (\n !this.disabled &&\n this.mapsService.getZoom() < this.mapsService.getMaxZoom()\n ) {\n this.mapsService.zoomIn();\n }\n }\n private zoomOut() {\n if (\n !this.disabled &&\n this.mapsService.getZoom() > this.mapsService.getMinZoom()\n ) {\n this.mapsService.zoomOut();\n }\n }\n private createButton(\n html: string,\n tile: string,\n className: string,\n container: HTMLElement,\n fn: (...arg: any[]) => any,\n ) {\n const link = DOM.create('a', className, container) as HTMLLinkElement;\n link.innerHTML = html;\n link.title = tile;\n link.href = 'javascript:void(0)';\n link.addEventListener('click', fn);\n return link;\n }\n private updateDisabled() {\n const mapsService = this.mapsService;\n const className = 'l7-disabled';\n DOM.removeClass(this.zoomInButton, className);\n DOM.removeClass(this.zoomOutButton, className);\n if (this.disabled || mapsService.getZoom() <= mapsService.getMinZoom()) {\n DOM.addClass(this.zoomOutButton, className);\n }\n if (this.disabled || mapsService.getZoom() >= mapsService.getMaxZoom()) {\n DOM.addClass(this.zoomInButton, className);\n }\n }\n}\n"],"file":"zoom.js"}
1
+ {"version":3,"sources":["../../src/control/zoom.ts"],"names":["Zoom","cfg","position","PositionType","TOPLEFT","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","name","zoomName","container","DOM","create","zoomInButton","createButton","controlOption","zoomIn","zoomOutButton","zoomOut","mapsService","on","updateDisabled","off","disabled","getZoom","getMaxZoom","getMinZoom","html","tile","className","fn","link","innerHTML","title","href","addEventListener","removeClass","addClass","Control"],"mappings":"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","sourcesContent":["import { bindAll, DOM } from '@antv/l7-utils';\nimport { IZoomControlOption } from '../interface';\nimport Control, { PositionType } from './BaseControl';\n\nexport default class Zoom extends Control {\n private disabled: boolean;\n private zoomInButton: HTMLElement;\n private zoomOutButton: HTMLElement;\n\n constructor(cfg?: Partial<IZoomControlOption>) {\n super(cfg);\n bindAll(['updateDisabled', 'zoomIn', 'zoomOut'], this);\n }\n public getDefault() {\n return {\n position: PositionType.TOPLEFT,\n zoomInText: '+',\n zoomInTitle: 'Zoom in',\n zoomOutText: '&#x2212;',\n zoomOutTitle: 'Zoom out',\n name: 'zoom',\n };\n }\n\n public onAdd(): HTMLElement {\n const zoomName = 'l7-control-zoom';\n const container = DOM.create('div', zoomName + ' l7-bar');\n\n this.zoomInButton = this.createButton(\n this.controlOption.zoomInText,\n this.controlOption.zoomInTitle,\n zoomName + '-in',\n container,\n this.zoomIn,\n );\n this.zoomOutButton = this.createButton(\n this.controlOption.zoomOutText,\n this.controlOption.zoomOutTitle,\n zoomName + '-out',\n container,\n this.zoomOut,\n );\n this.mapsService.on('zoomend', this.updateDisabled);\n this.mapsService.on('zoomchange', this.updateDisabled);\n this.updateDisabled();\n return container;\n }\n\n public onRemove() {\n this.mapsService.off('zoomend', this.updateDisabled);\n this.mapsService.off('zoomchange', this.updateDisabled);\n }\n\n public disable() {\n this.disabled = true;\n this.updateDisabled();\n return this;\n }\n\n public enable() {\n this.disabled = false;\n this.updateDisabled();\n return this;\n }\n\n private zoomIn() {\n if (\n !this.disabled &&\n this.mapsService.getZoom() < this.mapsService.getMaxZoom()\n ) {\n this.mapsService.zoomIn();\n }\n }\n private zoomOut() {\n if (\n !this.disabled &&\n this.mapsService.getZoom() > this.mapsService.getMinZoom()\n ) {\n this.mapsService.zoomOut();\n }\n }\n private createButton(\n html: string,\n tile: string,\n className: string,\n container: HTMLElement,\n fn: (...arg: any[]) => any,\n ) {\n const link = DOM.create('a', className, container) as HTMLLinkElement;\n link.innerHTML = html;\n link.title = tile;\n link.href = 'javascript:void(0)';\n link.addEventListener('click', fn);\n return link;\n }\n private updateDisabled() {\n const mapsService = this.mapsService;\n const className = 'l7-disabled';\n DOM.removeClass(this.zoomInButton, className);\n DOM.removeClass(this.zoomOutButton, className);\n if (this.disabled || mapsService.getZoom() <= mapsService.getMinZoom()) {\n DOM.addClass(this.zoomOutButton, className);\n }\n if (this.disabled || mapsService.getZoom() >= mapsService.getMaxZoom()) {\n DOM.addClass(this.zoomInButton, className);\n }\n }\n}\n"],"file":"zoom.js"}
package/lib/index.js CHANGED
@@ -5,6 +5,16 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ var _exportNames = {
9
+ Control: true,
10
+ Layers: true,
11
+ Logo: true,
12
+ Scale: true,
13
+ Zoom: true,
14
+ Marker: true,
15
+ MarkerLayer: true,
16
+ Popup: true
17
+ };
8
18
  Object.defineProperty(exports, "Control", {
9
19
  enumerable: true,
10
20
  get: function get() {
@@ -32,7 +42,7 @@ Object.defineProperty(exports, "Marker", {
32
42
  Object.defineProperty(exports, "MarkerLayer", {
33
43
  enumerable: true,
34
44
  get: function get() {
35
- return _markerlayer.default;
45
+ return _markerLayer.default;
36
46
  }
37
47
  });
38
48
  Object.defineProperty(exports, "Popup", {
@@ -66,10 +76,24 @@ var _zoom = _interopRequireDefault(require("./control/zoom"));
66
76
 
67
77
  var _marker = _interopRequireDefault(require("./marker"));
68
78
 
69
- var _markerlayer = _interopRequireDefault(require("./markerlayer"));
79
+ var _markerLayer = _interopRequireDefault(require("./marker-layer"));
70
80
 
71
81
  var _popup = _interopRequireDefault(require("./popup"));
72
82
 
83
+ var _interface = require("./interface");
84
+
85
+ Object.keys(_interface).forEach(function (key) {
86
+ if (key === "default" || key === "__esModule") return;
87
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
88
+ if (key in exports && exports[key] === _interface[key]) return;
89
+ Object.defineProperty(exports, key, {
90
+ enumerable: true,
91
+ get: function get() {
92
+ return _interface[key];
93
+ }
94
+ });
95
+ });
96
+
73
97
  function loadStyles(css, doc) {
74
98
  var isMiniAli = typeof my !== 'undefined' && !!my && typeof my.showToast === 'function' && my.isFRM !== true;
75
99
  var isWeChatMiniProgram = typeof wx !== 'undefined' && wx !== null && (typeof wx.request !== 'undefined' || typeof wx.miniProgram !== 'undefined');
@@ -110,5 +134,5 @@ function loadStyles(css, doc) {
110
134
  return style;
111
135
  }
112
136
 
113
- loadStyles(".l7-marker-container {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: absolute;\n}\n\n.l7-marker {\n position: absolute !important;\n top: 0;\n left: 0;\n z-index: 5;\n cursor: pointer;\n}\n\n.l7-marker-cluster {\n background-clip: padding-box;\n border-radius: 20px;\n background-color: rgba(181, 226, 140, 0.6);\n width: 40px;\n height: 40px;\n}\n.l7-marker-cluster div {\n width: 30px;\n height: 30px;\n margin-left: 5px;\n margin-top: 5px;\n text-align: center;\n border-radius: 15px;\n font: 12px 'Helvetica Neue', Arial, Helvetica, sans-serif;\n background-color: rgba(110, 204, 57, 0.6);\n}\n.l7-marker-cluster span {\n line-height: 30px;\n}\n\n.l7-popup-anchor-bottom,\n.l7-popup-anchor-bottom-left,\n.l7-popup-anchor-bottom-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 5px;\n}\n.l7-popup-anchor-top,\n.l7-popup-anchor-top-left,\n.l7-popup-anchor-top-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-popup-anchor-left {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.l7-popup-anchor-right {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n}\n.l7-popup {\n position: absolute;\n top: 0;\n left: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n will-change: transform;\n pointer-events: none;\n z-index: 5;\n}\n.l7-popup-tip {\n width: 0;\n height: 0;\n border: 10px solid transparent;\n z-index: 1;\n}\n.l7-popup-anchor-top .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-top: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-top: none;\n border-left: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-top: none;\n border-right: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-bottom .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-bottom: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-bottom: none;\n border-left: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-bottom: none;\n border-right: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-left .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-left: none;\n border-right-color: #fff;\n}\n\n.l7-popup-anchor-right .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-right: none;\n border-left-color: #fff;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n padding: 0;\n font-size: 25px;\n line-height: 20px;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n.l7-popup-anchor-top-left .l7-popup-content {\n border-top-left-radius: 0;\n}\n\n.l7-popup-anchor-top-right .l7-popup-content {\n border-top-right-radius: 0;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-content {\n border-bottom-left-radius: 0;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-content {\n border-bottom-right-radius: 0;\n}\n\n.l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-track-pointer * {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.l7-map:hover .l7-popup-track-pointer {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n\n.l7-map:active .l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* general toolbar styles */\n\n.l7-bar {\n -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n border-radius: 4px;\n}\n.l7-bar a,\n.l7-bar a:hover {\n background-color: #fff;\n width: 30px;\n height: 30px;\n font-size: 20px;\n display: block;\n text-align: center;\n text-decoration: none;\n color: #8e9dab;\n}\n.l7-bar a,\n.l7-control-layers-toggle {\n background-position: 50% 50%;\n background-repeat: no-repeat;\n display: block;\n}\n.l7-bar a:hover {\n background-color: #f4f4f4;\n}\n.l7-bar a:first-child {\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n}\n.l7-bar a:last-child {\n border-bottom-left-radius: 2px;\n border-bottom-right-radius: 2px;\n border-bottom: none;\n}\n.l7-bar a.l7-disabled {\n cursor: default;\n background-color: #f4f4f4;\n color: #bbb;\n}\n\n/* control positioning */\n\n.l7-control-container {\n font: 12px/1.5 'Helvetica Neue', Arial, Helvetica, sans-serif;\n}\n.l7-control-hide {\n display: none;\n}\n.l7-control {\n position: relative;\n z-index: 800;\n pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n pointer-events: auto;\n}\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-top,\n.l7-bottom {\n position: absolute;\n z-index: 1000;\n pointer-events: none;\n}\n.l7-top {\n top: 0;\n}\n.l7-right {\n right: 0;\n}\n.l7-bottom {\n bottom: 0;\n}\n.l7-left {\n left: 0;\n}\n.l7-center {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.l7-bottom.l7-center,\n.l7-top.l7-center {\n width: 100%;\n}\n.l7-right.l7-center,\n.l7-left.l7-center {\n height: 100%;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-top.l7-center,\n.l7-left.l7-center {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.l7-bottom.l7-center,\n.l7-right.l7-center {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n}\n\n.l7-center .l7-control {\n margin-right: 10px;\n margin-bottom: 10px;\n}\n\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-right .l7-control {\n float: right;\n}\n.l7-top .l7-control {\n margin-top: 10px;\n}\n.l7-bottom .l7-control {\n margin-bottom: 10px;\n}\n.l7-left .l7-control {\n margin-left: 10px;\n}\n.l7-right .l7-control {\n margin-right: 10px;\n}\n\n/* attribution and scale controls */\n\n.l7-control-container .l7-control-attribution {\n background: #fff;\n background: rgba(59, 58, 58, 0.7);\n margin: 0;\n}\n.l7-control-attribution,\n.l7-control-scale-line {\n padding: 0 5px;\n color: #333;\n}\n.l7-control-attribution a {\n text-decoration: none;\n}\n.l7-control-attribution a:hover {\n text-decoration: underline;\n}\n.l7-container .l7-control-attribution,\n.l7-container .l7-control-scale {\n font-size: 11px;\n padding: 5px 5px 2px 5px;\n background: rgba(255, 255, 255, 0.7);\n}\n.l7-left .l7-control-scale {\n margin-left: 5px;\n}\n.l7-bottom .l7-control-scale {\n margin-bottom: 5px;\n}\n.l7-control-scale-line {\n border: 2px solid #000;\n border-top: none;\n color: #000;\n line-height: 1.1;\n padding: 2px 5px 1px;\n font-size: 11px;\n white-space: nowrap;\n overflow: hidden;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n\n background: #fff;\n}\n.l7-control-scale-line:not(:first-child) {\n border-top: 2px solid #777;\n border-bottom: none;\n margin-top: -2px;\n}\n.l7-control-scale-line:not(:first-child):not(:last-child) {\n border-bottom: 2px solid #777;\n}\n\n.l7-touch .l7-control-attribution,\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n border: 2px solid rgba(0, 0, 0, 0.2);\n background-clip: padding-box;\n}\n/*logo */\n\n.l7-ctrl-logo {\n background-size: 100% 100%;\n width: 89px;\n height: 16px;\n margin: 0 0 -3px -3px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n background-repeat: no-repeat;\n cursor: pointer;\n background-image: url('data:image/png;base64,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');\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 2px;\n}\n.l7-control-layers-toggle {\n background-image: url('data:image/png;base64,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');\n width: 30px;\n height: 30px;\n background-size: 20px 20px;\n}\n\n.l7-touch .l7-control-layers-toggle {\n width: 44px;\n height: 44px;\n}\n.l7-control-layers .l7-control-layers-list,\n.l7-control-layers-expanded .l7-control-layers-toggle {\n display: none;\n}\n.l7-control-layers-expanded .l7-control-layers-list {\n display: block;\n position: relative;\n}\n.l7-control-layers-expanded {\n padding: 6px 10px 6px 6px;\n color: #59626b;\n background: #fff;\n}\n.l7-control-layers-scrollbar {\n overflow-y: scroll;\n overflow-x: hidden;\n padding-right: 5px;\n}\n.l7-control-layers-selector {\n margin-top: 2px;\n position: relative;\n top: 1px;\n}\n.l7-control-layers label {\n display: block;\n padding: 8px;\n}\n.l7-control-layers label input[type='radio'],\n.l7-control-layers label input[type='checkbox'] {\n width: 14px;\n height: 14px;\n margin: 0;\n}\n.l7-control-layers-separator {\n height: 0;\n border-top: 1px solid #d8d8d8;\n margin: 5px -10px 5px -6px;\n}\n.mapboxgl-ctrl-logo {\n display: none !important;\n}\n.amap-logo {\n display: none !important;\n}\n");
137
+ loadStyles(".l7-marker-container {\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: absolute;\n}\n\n.l7-marker {\n position: absolute !important;\n top: 0;\n left: 0;\n z-index: 5;\n cursor: pointer;\n}\n\n.l7-marker-cluster {\n background-clip: padding-box;\n border-radius: 20px;\n background-color: rgba(181, 226, 140, 0.6);\n width: 40px;\n height: 40px;\n}\n.l7-marker-cluster div {\n width: 30px;\n height: 30px;\n margin-left: 5px;\n margin-top: 5px;\n text-align: center;\n border-radius: 15px;\n font: 12px 'Helvetica Neue', Arial, Helvetica, sans-serif;\n background-color: rgba(110, 204, 57, 0.6);\n}\n.l7-marker-cluster span {\n line-height: 30px;\n}\n\n.l7-popup-anchor-bottom,\n.l7-popup-anchor-bottom-left,\n.l7-popup-anchor-bottom-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: reverse;\n -ms-flex-direction: column-reverse;\n flex-direction: column-reverse;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 5px;\n}\n.l7-popup-anchor-top,\n.l7-popup-anchor-top-left,\n.l7-popup-anchor-top-right {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-popup-anchor-left {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n}\n\n.l7-popup-anchor-right {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n -ms-flex-direction: row-reverse;\n flex-direction: row-reverse;\n}\n.l7-popup {\n position: absolute;\n top: 0;\n left: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n will-change: transform;\n pointer-events: none;\n z-index: 5;\n}\n.l7-popup-tip {\n width: 0;\n height: 0;\n border: 10px solid transparent;\n z-index: 1;\n}\n.l7-popup-anchor-top .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-top: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-top: none;\n border-left: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-top-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-top: none;\n border-right: none;\n border-bottom-color: #fff;\n}\n\n.l7-popup-anchor-bottom .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-bottom: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-tip {\n -webkit-align-self: flex-start;\n -ms-flex-item-align: start;\n align-self: flex-start;\n border-bottom: none;\n border-left: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-tip {\n -webkit-align-self: flex-end;\n -ms-flex-item-align: end;\n align-self: flex-end;\n border-bottom: none;\n border-right: none;\n border-top-color: #fff;\n}\n\n.l7-popup-anchor-left .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-left: none;\n border-right-color: #fff;\n}\n\n.l7-popup-anchor-right .l7-popup-tip {\n -webkit-align-self: center;\n -ms-flex-item-align: center;\n align-self: center;\n border-right: none;\n border-left-color: #fff;\n}\n\n.l7-popup-close-button {\n position: absolute;\n right: 0;\n top: 0;\n border: 0;\n padding: 0;\n font-size: 25px;\n line-height: 20px;\n border-radius: 0 3px 0 0;\n cursor: pointer;\n background-color: transparent;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n.l7-popup-anchor-top-left .l7-popup-content {\n border-top-left-radius: 0;\n}\n\n.l7-popup-anchor-top-right .l7-popup-content {\n border-top-right-radius: 0;\n}\n\n.l7-popup-anchor-bottom-left .l7-popup-content {\n border-bottom-left-radius: 0;\n}\n\n.l7-popup-anchor-bottom-right .l7-popup-content {\n border-bottom-right-radius: 0;\n}\n\n.l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-track-pointer * {\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.l7-map:hover .l7-popup-track-pointer {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n\n.l7-map:active .l7-popup-track-pointer {\n display: none;\n}\n\n.l7-popup-close-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.l7-popup-content {\n position: relative;\n background: #fff;\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n padding: 10px 10px 15px;\n pointer-events: auto;\n}\n\n/* general toolbar styles */\n\n.l7-bar {\n -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);\n box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);\n border-radius: 4px;\n}\n.l7-bar a,\n.l7-bar a:hover {\n background-color: #fff;\n width: 30px;\n height: 30px;\n font-size: 20px;\n display: block;\n text-align: center;\n text-decoration: none;\n color: #8e9dab;\n}\n.l7-bar a,\n.l7-control-layers-toggle {\n background-position: 50% 50%;\n background-repeat: no-repeat;\n display: block;\n}\n.l7-bar a:hover {\n background-color: #f4f4f4;\n}\n.l7-bar a:first-child {\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n}\n.l7-bar a:last-child {\n border-bottom-left-radius: 2px;\n border-bottom-right-radius: 2px;\n border-bottom: none;\n}\n.l7-bar a.l7-disabled {\n cursor: default;\n background-color: #f4f4f4;\n color: #bbb;\n}\n\n/* control positioning */\n\n.l7-control-container {\n font: 12px/1.5 'Helvetica Neue', Arial, Helvetica, sans-serif;\n}\n.l7-control-hide {\n display: none;\n}\n.l7-control {\n position: relative;\n z-index: 800;\n pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n pointer-events: auto;\n}\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-top,\n.l7-bottom {\n position: absolute;\n z-index: 1000;\n pointer-events: none;\n}\n.l7-top {\n top: 0;\n}\n.l7-right {\n right: 0;\n}\n.l7-bottom {\n bottom: 0;\n}\n.l7-left {\n left: 0;\n}\n.l7-center {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.l7-bottom.l7-center,\n.l7-top.l7-center {\n width: 100%;\n}\n.l7-right.l7-center,\n.l7-left.l7-center {\n height: 100%;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.l7-top.l7-center,\n.l7-left.l7-center {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.l7-bottom.l7-center,\n.l7-right.l7-center {\n -webkit-box-align: end;\n -ms-flex-align: end;\n align-items: flex-end;\n}\n\n.l7-center .l7-control {\n margin-right: 10px;\n margin-bottom: 10px;\n}\n\n.l7-control {\n float: left;\n clear: both;\n}\n.l7-right .l7-control {\n float: right;\n}\n.l7-top .l7-control {\n margin-top: 10px;\n}\n.l7-bottom .l7-control {\n margin-bottom: 10px;\n}\n.l7-left .l7-control {\n margin-left: 10px;\n}\n.l7-right .l7-control {\n margin-right: 10px;\n}\n\n/* attribution and scale controls */\n\n.l7-control-container .l7-control-attribution {\n background: #fff;\n background: rgba(59, 58, 58, 0.7);\n margin: 0;\n}\n.l7-control-attribution,\n.l7-control-scale-line {\n padding: 0 5px;\n color: #333;\n}\n.l7-control-attribution a {\n text-decoration: none;\n}\n.l7-control-attribution a:hover {\n text-decoration: underline;\n}\n.l7-container .l7-control-attribution,\n.l7-container .l7-control-scale {\n font-size: 11px;\n padding: 5px 5px 2px 5px;\n background: rgba(255, 255, 255, 0.7);\n}\n.l7-left .l7-control-scale {\n margin-left: 5px;\n}\n.l7-bottom .l7-control-scale {\n margin-bottom: 5px;\n}\n.l7-control-scale-line {\n border: 2px solid #000;\n border-top: none;\n color: #000;\n line-height: 1.1;\n padding: 2px 5px 1px;\n font-size: 11px;\n white-space: nowrap;\n overflow: hidden;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n\n background: #fff;\n}\n.l7-control-scale-line:not(:first-child) {\n border-top: 2px solid #777;\n border-bottom: none;\n margin-top: -2px;\n}\n.l7-control-scale-line:not(:first-child):not(:last-child) {\n border-bottom: 2px solid #777;\n}\n\n.l7-touch .l7-control-attribution,\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.l7-touch .l7-control-layers,\n.l7-touch .l7-bar {\n border: 2px solid rgba(0, 0, 0, 0.2);\n background-clip: padding-box;\n}\n/*logo */\n\n.l7-ctrl-logo {\n background-size: 100% 100%;\n width: 89px;\n height: 16px;\n margin: 0 0 -3px -3px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n background-repeat: no-repeat;\n cursor: pointer;\n background-image: url('data:image/png;base64,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');\n}\n\n/* layers control */\n\n.l7-control-layers {\n -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);\n background: #fff;\n border-radius: 2px;\n}\n.l7-control-layers-toggle {\n background-image: url('data:image/png;base64,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');\n width: 30px;\n height: 30px;\n background-size: 20px 20px;\n}\n\n.l7-touch .l7-control-layers-toggle {\n width: 44px;\n height: 44px;\n}\n.l7-control-layers .l7-control-layers-list,\n.l7-control-layers-expanded .l7-control-layers-toggle {\n display: none;\n}\n.l7-control-layers-expanded .l7-control-layers-list {\n display: block;\n position: relative;\n}\n.l7-control-layers-expanded {\n padding: 6px 10px 6px 6px;\n color: #59626b;\n background: #fff;\n}\n.l7-control-layers-scrollbar {\n overflow-y: scroll;\n overflow-x: hidden;\n padding-right: 5px;\n}\n.l7-control-layers-selector {\n margin-top: 2px;\n position: relative;\n top: 1px;\n}\n.l7-control-layers label {\n display: block;\n padding: 8px;\n}\n.l7-control-layers label input[type='radio'],\n.l7-control-layers label input[type='checkbox'] {\n width: 14px;\n height: 14px;\n margin: 0;\n}\n.l7-control-layers-separator {\n height: 0;\n border-top: 1px solid #d8d8d8;\n margin: 5px -10px 5px -6px;\n}\n.mapboxgl-ctrl-logo {\n display: none !important;\n}\n.amap-logo {\n display: none !important;\n}\n");
114
138
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["import Control from './control/BaseControl';\nimport Layers from './control/layer';\nimport Logo from './control/logo';\nimport Scale from './control/scale';\nimport Zoom from './control/zoom';\nimport Marker from './marker';\nimport MarkerLayer from './markerlayer';\nimport Popup from './popup';\n\n// 引入样式\n// TODO: 使用 Less 或者 Sass,每个组件单独引用自身样式\nimport './css/l7.css';\n\nexport { Control, Logo, Scale, Zoom, Layers, Marker, Popup, MarkerLayer };\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAQA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["import Control from './control/BaseControl';\nimport Layers from './control/layer';\nimport Logo from './control/logo';\nimport Scale from './control/scale';\nimport Zoom from './control/zoom';\nimport Marker from './marker';\nimport MarkerLayer from './marker-layer';\nimport Popup from './popup';\n\n// 引入样式\n// TODO: 使用 Less 或者 Sass,每个组件单独引用自身样式\nimport './css/l7.css';\n\nexport { Control, Logo, Scale, Zoom, Layers, Marker, Popup, MarkerLayer };\n\nexport * from './interface';\n"],"file":"index.js"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"interface.js"}
@@ -341,4 +341,4 @@ var MarkerLayer = function (_EventEmitter) {
341
341
  }(_eventemitter.EventEmitter);
342
342
 
343
343
  exports.default = MarkerLayer;
344
- //# sourceMappingURL=markerlayer.js.map
344
+ //# sourceMappingURL=marker-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marker-layer.ts"],"names":["MarkerLayer","option","markerLayerOption","getDefault","zoom","clusterOption","cluster","radius","maxZoom","minZoom","style","className","scene","mapsService","get","TYPES","IMapService","initCluster","update","on","addMarkers","marker","addPoint","markers","length","getZoom","bbox","getBounds","Math","floor","getClusterMarker","push","indexOf","markerIndex","splice","map","m","getElement","opacity","clusterMarkers","getMarkers","forEach","addTo","remove","clusterMarker","off","clear","removeAllListeners","id","getLnglat","lng","lat","feature","geometry","type","coordinates","properties","getExtData","marker_id","points","clusterIndex","load","Supercluster","viewBounds","viewBBox","concat","clusterPoint","getClusters","field","method","cluster_id","clusterData","getLeaves","columnData","item","data","column","Satistics","getColumn","stat","getSatByColumn","fieldName","toFixed","clusterId","limit","Infinity","offset","element","generateElement","bind","Marker","setLnglat","abs","el","DOM","create","label","span","point_count","text","textContent","EventEmitter"],"mappings":"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","sourcesContent":["import { IMapService, IMarker, TYPES } from '@antv/l7-core';\nimport {\n bindAll,\n boundsContains,\n DOM,\n IBounds,\n padBounds,\n Satistics,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { merge } from 'lodash';\n// @ts-ignore\n// tslint:disable-next-line:no-submodule-imports\nimport Supercluster from 'supercluster/dist/supercluster';\nimport { IMarkerLayerOption, IMarkerStyleOption } from './interface';\nimport Marker from './marker';\n\ninterface IPointFeature {\n geometry: {\n type: 'Point';\n coordinates: [number, number];\n };\n properties: any;\n}\n\nexport default class MarkerLayer extends EventEmitter {\n private markers: IMarker[] = [];\n private markerLayerOption: IMarkerLayerOption;\n private clusterIndex: Supercluster;\n private points: IPointFeature[] = [];\n private clusterMarkers: IMarker[] = [];\n private mapsService: IMapService<unknown>;\n private scene: Container;\n private zoom: number;\n private bbox: IBounds;\n\n constructor(option?: Partial<IMarkerLayerOption>) {\n super();\n this.markerLayerOption = merge(this.getDefault(), option);\n bindAll(['update'], this);\n this.zoom = this.markerLayerOption.clusterOption?.zoom || -99;\n }\n public getDefault() {\n return {\n cluster: false,\n clusterOption: {\n radius: 80,\n maxZoom: 20,\n minZoom: 0,\n zoom: -99,\n style: {},\n className: '',\n },\n };\n }\n public addTo(scene: Container) {\n // this.remove();\n this.scene = scene;\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n if (this.markerLayerOption.cluster) {\n this.initCluster();\n this.update();\n // 地图视野变化时,重新计算视野内的聚合点。\n this.mapsService.on('camerachange', this.update); // amap1.x 更新事件\n this.mapsService.on('viewchange', this.update); // amap2.0 更新事件\n }\n this.addMarkers();\n return this;\n }\n public addMarker(marker: IMarker) {\n const cluster = this.markerLayerOption.cluster;\n if (cluster) {\n this.addPoint(marker, this.markers.length);\n if (this.mapsService) {\n // 在新增 marker 的时候需要更新聚合信息(哪怕此时的 zoom 没有发生变化)\n const zoom = this.mapsService.getZoom();\n const bbox = this.mapsService.getBounds();\n this.bbox = padBounds(bbox, 0.5);\n this.zoom = Math.floor(zoom);\n this.getClusterMarker(this.bbox, this.zoom);\n }\n }\n this.markers.push(marker);\n }\n\n public removeMarker(marker: IMarker) {\n this.markers.indexOf(marker);\n const markerIndex = this.markers.indexOf(marker);\n if (markerIndex > -1) {\n this.markers.splice(markerIndex, 1);\n }\n }\n\n /**\n * 隐藏 marker 在每个 marker 上单独修改属性而不是在 markerContainer 上修改(在 markerContainer 修改会有用户在场景加载完之前调用失败的问题)\n */\n public hide() {\n this.markers.map((m) => {\n m.getElement().style.opacity = '0';\n });\n\n this.clusterMarkers.map((m) => {\n m.getElement().style.opacity = '0';\n });\n }\n\n /**\n * 显示 marker\n */\n public show() {\n this.markers.map((m) => {\n m.getElement().style.opacity = '1';\n });\n\n this.clusterMarkers.map((m) => {\n m.getElement().style.opacity = '1';\n });\n }\n\n public getMarkers() {\n const cluster = this.markerLayerOption.cluster;\n return cluster ? this.clusterMarkers : this.markers;\n }\n\n public addMarkers() {\n this.getMarkers().forEach((marker: IMarker) => {\n marker.addTo(this.scene);\n });\n }\n public clear() {\n this.markers.forEach((marker: IMarker) => {\n marker.remove();\n });\n this.clusterMarkers.forEach((clusterMarker: IMarker) => {\n clusterMarker.remove();\n });\n this.mapsService.off('camerachange', this.update);\n this.markers = [];\n this.clusterMarkers = [];\n }\n\n public destroy() {\n this.clear();\n this.removeAllListeners();\n }\n\n private addPoint(marker: IMarker, id: number) {\n const { lng, lat } = marker.getLnglat();\n const feature: IPointFeature = {\n geometry: {\n type: 'Point',\n coordinates: [lng, lat],\n },\n properties: {\n ...marker.getExtData(),\n marker_id: id,\n },\n };\n this.points.push(feature);\n if (this.clusterIndex) {\n // 在新增点的时候需要更新 cluster 的数据\n this.clusterIndex.load(this.points);\n }\n }\n\n private initCluster() {\n if (!this.markerLayerOption.cluster) {\n return;\n }\n const { radius, minZoom = 0, maxZoom } = this.markerLayerOption\n .clusterOption as IMarkerStyleOption;\n this.clusterIndex = new Supercluster({\n radius,\n minZoom,\n maxZoom,\n });\n // @ts-ignore\n this.clusterIndex.load(this.points);\n }\n\n private getClusterMarker(viewBounds: IBounds, zoom: number) {\n const viewBBox = viewBounds[0].concat(viewBounds[1]);\n const clusterPoint = this.clusterIndex.getClusters(viewBBox, zoom);\n this.clusterMarkers.forEach((marker: IMarker) => {\n marker.remove();\n });\n this.clusterMarkers = [];\n clusterPoint.forEach((feature: any) => {\n const { field, method } = this.markerLayerOption.clusterOption;\n // 处理聚合数据\n if (feature.properties && feature.properties?.cluster_id) {\n const clusterData = this.getLeaves(feature.properties?.cluster_id);\n feature.properties.clusterData = clusterData;\n if (field && method) {\n const columnData = clusterData?.map((item: any) => {\n const data = {\n [field]: item.properties[field],\n };\n return data;\n });\n const column = Satistics.getColumn(columnData as any, field);\n const stat = Satistics.getSatByColumn(method, column);\n const fieldName = 'point_' + method;\n feature.properties[fieldName] = stat.toFixed(2);\n }\n }\n const marker = this.clusterMarker(feature);\n this.clusterMarkers.push(marker);\n marker.addTo(this.scene);\n });\n }\n private getLeaves(\n clusterId: number,\n limit: number = Infinity,\n offset: number = 0,\n ) {\n if (!clusterId) {\n return null;\n }\n return this.clusterIndex.getLeaves(clusterId, limit, offset);\n }\n private clusterMarker(feature: any) {\n const clusterOption = this.markerLayerOption.clusterOption;\n\n const {\n element = this.generateElement.bind(this),\n } = clusterOption as IMarkerStyleOption;\n const marker = new Marker({\n element: element(feature),\n }).setLnglat({\n lng: feature.geometry.coordinates[0],\n lat: feature.geometry.coordinates[1],\n });\n return marker;\n }\n private normalMarker(feature: any) {\n const marker_id = feature.properties.marker_id;\n return this.markers[marker_id];\n }\n\n private update() {\n if (!this.mapsService) {\n return;\n }\n const zoom = this.mapsService.getZoom();\n const bbox = this.mapsService.getBounds();\n if (\n !this.bbox ||\n Math.abs(zoom - this.zoom) >= 1 ||\n !boundsContains(this.bbox, bbox)\n ) {\n this.bbox = padBounds(bbox, 0.5);\n this.zoom = Math.floor(zoom);\n this.getClusterMarker(this.bbox, this.zoom);\n }\n }\n\n private generateElement(feature: any) {\n const el = DOM.create('div', 'l7-marker-cluster');\n const label = DOM.create('div', '', el);\n const span = DOM.create('span', '', label);\n const { field, method } = this.markerLayerOption.clusterOption;\n feature.properties.point_count = feature.properties.point_count || 1;\n\n const text =\n field && method\n ? feature.properties['point_' + method] || feature.properties[field]\n : feature.properties.point_count;\n span.textContent = text;\n return el;\n }\n}\n"],"file":"marker-layer.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-component",
3
- "version": "2.9.4",
3
+ "version": "2.9.5",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -25,8 +25,8 @@
25
25
  "author": "lzxue",
26
26
  "license": "ISC",
27
27
  "dependencies": {
28
- "@antv/l7-core": "2.9.4",
29
- "@antv/l7-utils": "2.9.4",
28
+ "@antv/l7-core": "2.9.5",
29
+ "@antv/l7-utils": "2.9.5",
30
30
  "@babel/runtime": "^7.7.7",
31
31
  "eventemitter3": "^4.0.0",
32
32
  "inversify": "^5.0.1",
@@ -34,7 +34,7 @@
34
34
  "reflect-metadata": "^0.1.13",
35
35
  "supercluster": "^7.0.0"
36
36
  },
37
- "gitHead": "33e9734f606000933a0ad28a6668974579d3e87c",
37
+ "gitHead": "2b25bb3a8a861e71c53cb46fe03e9f2136fbca26",
38
38
  "publishConfig": {
39
39
  "access": "public"
40
40
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/markerlayer.ts"],"names":["TYPES","bindAll","boundsContains","DOM","padBounds","Satistics","EventEmitter","Supercluster","Marker","MarkerLayer","option","markerLayerOption","getDefault","zoom","clusterOption","cluster","radius","maxZoom","minZoom","style","className","scene","mapsService","get","IMapService","initCluster","update","on","addMarkers","marker","addPoint","markers","length","getZoom","bbox","getBounds","Math","floor","getClusterMarker","push","indexOf","markerIndex","splice","map","m","getElement","opacity","clusterMarkers","getMarkers","forEach","addTo","remove","clusterMarker","off","clear","removeAllListeners","id","getLnglat","lng","lat","feature","geometry","type","coordinates","properties","getExtData","marker_id","points","clusterIndex","load","viewBounds","viewBBox","concat","clusterPoint","getClusters","field","method","cluster_id","clusterData","getLeaves","columnData","item","data","column","getColumn","stat","getSatByColumn","fieldName","toFixed","clusterId","limit","Infinity","offset","element","generateElement","bind","setLnglat","abs","el","create","label","span","point_count","text","textContent"],"mappings":"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","sourcesContent":["import { IMapService, IMarker, TYPES } from '@antv/l7-core';\nimport {\n bindAll,\n boundsContains,\n DOM,\n IBounds,\n padBounds,\n Satistics,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { merge } from 'lodash';\n// @ts-ignore\n// tslint:disable-next-line:no-submodule-imports\nimport Supercluster from 'supercluster/dist/supercluster';\nimport Marker from './marker';\ntype CallBack = (...args: any[]) => any;\ninterface IMarkerStyleOption {\n element?: CallBack;\n style: { [key: string]: any } | CallBack;\n className: string;\n field?: string;\n method?: 'sum' | 'max' | 'min' | 'mean';\n radius: number;\n maxZoom: number;\n minZoom: number;\n zoom: number;\n}\n\ninterface IMarkerLayerOption {\n cluster: boolean;\n clusterOption: Partial<IMarkerStyleOption>;\n}\n\ninterface IPointFeature {\n geometry: {\n type: 'Point';\n coordinates: [number, number];\n };\n properties: any;\n}\nexport default class MarkerLayer extends EventEmitter {\n private markers: IMarker[] = [];\n private markerLayerOption: IMarkerLayerOption;\n private clusterIndex: Supercluster;\n private points: IPointFeature[] = [];\n private clusterMarkers: IMarker[] = [];\n private mapsService: IMapService<unknown>;\n private scene: Container;\n private zoom: number;\n private bbox: IBounds;\n\n constructor(option?: Partial<IMarkerLayerOption>) {\n super();\n this.markerLayerOption = merge(this.getDefault(), option);\n bindAll(['update'], this);\n this.zoom = this.markerLayerOption.clusterOption?.zoom || -99;\n }\n public getDefault() {\n return {\n cluster: false,\n clusterOption: {\n radius: 80,\n maxZoom: 20,\n minZoom: 0,\n zoom: -99,\n style: {},\n className: '',\n },\n };\n }\n public addTo(scene: Container) {\n // this.remove();\n this.scene = scene;\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n if (this.markerLayerOption.cluster) {\n this.initCluster();\n this.update();\n // 地图视野变化时,重新计算视野内的聚合点。\n this.mapsService.on('camerachange', this.update); // amap1.x 更新事件\n this.mapsService.on('viewchange', this.update); // amap2.0 更新事件\n }\n this.addMarkers();\n return this;\n }\n public addMarker(marker: IMarker) {\n const cluster = this.markerLayerOption.cluster;\n if (cluster) {\n this.addPoint(marker, this.markers.length);\n if (this.mapsService) {\n // 在新增 marker 的时候需要更新聚合信息(哪怕此时的 zoom 没有发生变化)\n const zoom = this.mapsService.getZoom();\n const bbox = this.mapsService.getBounds();\n this.bbox = padBounds(bbox, 0.5);\n this.zoom = Math.floor(zoom);\n this.getClusterMarker(this.bbox, this.zoom);\n }\n }\n this.markers.push(marker);\n }\n\n public removeMarker(marker: IMarker) {\n this.markers.indexOf(marker);\n const markerIndex = this.markers.indexOf(marker);\n if (markerIndex > -1) {\n this.markers.splice(markerIndex, 1);\n }\n }\n\n /**\n * 隐藏 marker 在每个 marker 上单独修改属性而不是在 markerContainer 上修改(在 markerContainer 修改会有用户在场景加载完之前调用失败的问题)\n */\n public hide() {\n this.markers.map((m) => {\n m.getElement().style.opacity = '0';\n });\n\n this.clusterMarkers.map((m) => {\n m.getElement().style.opacity = '0';\n });\n }\n\n /**\n * 显示 marker\n */\n public show() {\n this.markers.map((m) => {\n m.getElement().style.opacity = '1';\n });\n\n this.clusterMarkers.map((m) => {\n m.getElement().style.opacity = '1';\n });\n }\n\n public getMarkers() {\n const cluster = this.markerLayerOption.cluster;\n return cluster ? this.clusterMarkers : this.markers;\n }\n\n public addMarkers() {\n this.getMarkers().forEach((marker: IMarker) => {\n marker.addTo(this.scene);\n });\n }\n public clear() {\n this.markers.forEach((marker: IMarker) => {\n marker.remove();\n });\n this.clusterMarkers.forEach((clusterMarker: IMarker) => {\n clusterMarker.remove();\n });\n this.mapsService.off('camerachange', this.update);\n this.markers = [];\n this.clusterMarkers = [];\n }\n\n public destroy() {\n this.clear();\n this.removeAllListeners();\n }\n\n private addPoint(marker: IMarker, id: number) {\n const { lng, lat } = marker.getLnglat();\n const feature: IPointFeature = {\n geometry: {\n type: 'Point',\n coordinates: [lng, lat],\n },\n properties: {\n ...marker.getExtData(),\n marker_id: id,\n },\n };\n this.points.push(feature);\n if (this.clusterIndex) {\n // 在新增点的时候需要更新 cluster 的数据\n this.clusterIndex.load(this.points);\n }\n }\n\n private initCluster() {\n if (!this.markerLayerOption.cluster) {\n return;\n }\n const { radius, minZoom = 0, maxZoom } = this.markerLayerOption\n .clusterOption as IMarkerStyleOption;\n this.clusterIndex = new Supercluster({\n radius,\n minZoom,\n maxZoom,\n });\n // @ts-ignore\n this.clusterIndex.load(this.points);\n }\n\n private getClusterMarker(viewBounds: IBounds, zoom: number) {\n const viewBBox = viewBounds[0].concat(viewBounds[1]);\n const clusterPoint = this.clusterIndex.getClusters(viewBBox, zoom);\n this.clusterMarkers.forEach((marker: IMarker) => {\n marker.remove();\n });\n this.clusterMarkers = [];\n clusterPoint.forEach((feature: any) => {\n const { field, method } = this.markerLayerOption.clusterOption;\n // 处理聚合数据\n if (feature.properties && feature.properties?.cluster_id) {\n const clusterData = this.getLeaves(feature.properties?.cluster_id);\n feature.properties.clusterData = clusterData;\n if (field && method) {\n const columnData = clusterData?.map((item: any) => {\n const data = {\n [field]: item.properties[field],\n };\n return data;\n });\n const column = Satistics.getColumn(columnData as any, field);\n const stat = Satistics.getSatByColumn(method, column);\n const fieldName = 'point_' + method;\n feature.properties[fieldName] = stat.toFixed(2);\n }\n }\n const marker = this.clusterMarker(feature);\n this.clusterMarkers.push(marker);\n marker.addTo(this.scene);\n });\n }\n private getLeaves(\n clusterId: number,\n limit: number = Infinity,\n offset: number = 0,\n ) {\n if (!clusterId) {\n return null;\n }\n return this.clusterIndex.getLeaves(clusterId, limit, offset);\n }\n private clusterMarker(feature: any) {\n const clusterOption = this.markerLayerOption.clusterOption;\n\n const {\n element = this.generateElement.bind(this),\n } = clusterOption as IMarkerStyleOption;\n const marker = new Marker({\n element: element(feature),\n }).setLnglat({\n lng: feature.geometry.coordinates[0],\n lat: feature.geometry.coordinates[1],\n });\n return marker;\n }\n private normalMarker(feature: any) {\n const marker_id = feature.properties.marker_id;\n return this.markers[marker_id];\n }\n\n private update() {\n if (!this.mapsService) {\n return;\n }\n const zoom = this.mapsService.getZoom();\n const bbox = this.mapsService.getBounds();\n if (\n !this.bbox ||\n Math.abs(zoom - this.zoom) >= 1 ||\n !boundsContains(this.bbox, bbox)\n ) {\n this.bbox = padBounds(bbox, 0.5);\n this.zoom = Math.floor(zoom);\n this.getClusterMarker(this.bbox, this.zoom);\n }\n }\n\n private generateElement(feature: any) {\n const el = DOM.create('div', 'l7-marker-cluster');\n const label = DOM.create('div', '', el);\n const span = DOM.create('span', '', label);\n const { field, method } = this.markerLayerOption.clusterOption;\n feature.properties.point_count = feature.properties.point_count || 1;\n\n const text =\n field && method\n ? feature.properties['point_' + method] || feature.properties[field]\n : feature.properties.point_count;\n span.textContent = text;\n return el;\n }\n}\n"],"file":"markerlayer.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/markerlayer.ts"],"names":["MarkerLayer","option","markerLayerOption","getDefault","zoom","clusterOption","cluster","radius","maxZoom","minZoom","style","className","scene","mapsService","get","TYPES","IMapService","initCluster","update","on","addMarkers","marker","addPoint","markers","length","getZoom","bbox","getBounds","Math","floor","getClusterMarker","push","indexOf","markerIndex","splice","map","m","getElement","opacity","clusterMarkers","getMarkers","forEach","addTo","remove","clusterMarker","off","clear","removeAllListeners","id","getLnglat","lng","lat","feature","geometry","type","coordinates","properties","getExtData","marker_id","points","clusterIndex","load","Supercluster","viewBounds","viewBBox","concat","clusterPoint","getClusters","field","method","cluster_id","clusterData","getLeaves","columnData","item","data","column","Satistics","getColumn","stat","getSatByColumn","fieldName","toFixed","clusterId","limit","Infinity","offset","element","generateElement","bind","Marker","setLnglat","abs","el","DOM","create","label","span","point_count","text","textContent","EventEmitter"],"mappings":"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","sourcesContent":["import { IMapService, IMarker, TYPES } from '@antv/l7-core';\nimport {\n bindAll,\n boundsContains,\n DOM,\n IBounds,\n padBounds,\n Satistics,\n} from '@antv/l7-utils';\nimport { EventEmitter } from 'eventemitter3';\nimport { Container } from 'inversify';\nimport { merge } from 'lodash';\n// @ts-ignore\n// tslint:disable-next-line:no-submodule-imports\nimport Supercluster from 'supercluster/dist/supercluster';\nimport Marker from './marker';\ntype CallBack = (...args: any[]) => any;\ninterface IMarkerStyleOption {\n element?: CallBack;\n style: { [key: string]: any } | CallBack;\n className: string;\n field?: string;\n method?: 'sum' | 'max' | 'min' | 'mean';\n radius: number;\n maxZoom: number;\n minZoom: number;\n zoom: number;\n}\n\ninterface IMarkerLayerOption {\n cluster: boolean;\n clusterOption: Partial<IMarkerStyleOption>;\n}\n\ninterface IPointFeature {\n geometry: {\n type: 'Point';\n coordinates: [number, number];\n };\n properties: any;\n}\nexport default class MarkerLayer extends EventEmitter {\n private markers: IMarker[] = [];\n private markerLayerOption: IMarkerLayerOption;\n private clusterIndex: Supercluster;\n private points: IPointFeature[] = [];\n private clusterMarkers: IMarker[] = [];\n private mapsService: IMapService<unknown>;\n private scene: Container;\n private zoom: number;\n private bbox: IBounds;\n\n constructor(option?: Partial<IMarkerLayerOption>) {\n super();\n this.markerLayerOption = merge(this.getDefault(), option);\n bindAll(['update'], this);\n this.zoom = this.markerLayerOption.clusterOption?.zoom || -99;\n }\n public getDefault() {\n return {\n cluster: false,\n clusterOption: {\n radius: 80,\n maxZoom: 20,\n minZoom: 0,\n zoom: -99,\n style: {},\n className: '',\n },\n };\n }\n public addTo(scene: Container) {\n // this.remove();\n this.scene = scene;\n this.mapsService = scene.get<IMapService>(TYPES.IMapService);\n if (this.markerLayerOption.cluster) {\n this.initCluster();\n this.update();\n // 地图视野变化时,重新计算视野内的聚合点。\n this.mapsService.on('camerachange', this.update); // amap1.x 更新事件\n this.mapsService.on('viewchange', this.update); // amap2.0 更新事件\n }\n this.addMarkers();\n return this;\n }\n public addMarker(marker: IMarker) {\n const cluster = this.markerLayerOption.cluster;\n if (cluster) {\n this.addPoint(marker, this.markers.length);\n if (this.mapsService) {\n // 在新增 marker 的时候需要更新聚合信息(哪怕此时的 zoom 没有发生变化)\n const zoom = this.mapsService.getZoom();\n const bbox = this.mapsService.getBounds();\n this.bbox = padBounds(bbox, 0.5);\n this.zoom = Math.floor(zoom);\n this.getClusterMarker(this.bbox, this.zoom);\n }\n }\n this.markers.push(marker);\n }\n\n public removeMarker(marker: IMarker) {\n this.markers.indexOf(marker);\n const markerIndex = this.markers.indexOf(marker);\n if (markerIndex > -1) {\n this.markers.splice(markerIndex, 1);\n }\n }\n\n /**\n * 隐藏 marker 在每个 marker 上单独修改属性而不是在 markerContainer 上修改(在 markerContainer 修改会有用户在场景加载完之前调用失败的问题)\n */\n public hide() {\n this.markers.map((m) => {\n m.getElement().style.opacity = '0';\n });\n\n this.clusterMarkers.map((m) => {\n m.getElement().style.opacity = '0';\n });\n }\n\n /**\n * 显示 marker\n */\n public show() {\n this.markers.map((m) => {\n m.getElement().style.opacity = '1';\n });\n\n this.clusterMarkers.map((m) => {\n m.getElement().style.opacity = '1';\n });\n }\n\n public getMarkers() {\n const cluster = this.markerLayerOption.cluster;\n return cluster ? this.clusterMarkers : this.markers;\n }\n\n public addMarkers() {\n this.getMarkers().forEach((marker: IMarker) => {\n marker.addTo(this.scene);\n });\n }\n public clear() {\n this.markers.forEach((marker: IMarker) => {\n marker.remove();\n });\n this.clusterMarkers.forEach((clusterMarker: IMarker) => {\n clusterMarker.remove();\n });\n this.mapsService.off('camerachange', this.update);\n this.markers = [];\n this.clusterMarkers = [];\n }\n\n public destroy() {\n this.clear();\n this.removeAllListeners();\n }\n\n private addPoint(marker: IMarker, id: number) {\n const { lng, lat } = marker.getLnglat();\n const feature: IPointFeature = {\n geometry: {\n type: 'Point',\n coordinates: [lng, lat],\n },\n properties: {\n ...marker.getExtData(),\n marker_id: id,\n },\n };\n this.points.push(feature);\n if (this.clusterIndex) {\n // 在新增点的时候需要更新 cluster 的数据\n this.clusterIndex.load(this.points);\n }\n }\n\n private initCluster() {\n if (!this.markerLayerOption.cluster) {\n return;\n }\n const { radius, minZoom = 0, maxZoom } = this.markerLayerOption\n .clusterOption as IMarkerStyleOption;\n this.clusterIndex = new Supercluster({\n radius,\n minZoom,\n maxZoom,\n });\n // @ts-ignore\n this.clusterIndex.load(this.points);\n }\n\n private getClusterMarker(viewBounds: IBounds, zoom: number) {\n const viewBBox = viewBounds[0].concat(viewBounds[1]);\n const clusterPoint = this.clusterIndex.getClusters(viewBBox, zoom);\n this.clusterMarkers.forEach((marker: IMarker) => {\n marker.remove();\n });\n this.clusterMarkers = [];\n clusterPoint.forEach((feature: any) => {\n const { field, method } = this.markerLayerOption.clusterOption;\n // 处理聚合数据\n if (feature.properties && feature.properties?.cluster_id) {\n const clusterData = this.getLeaves(feature.properties?.cluster_id);\n feature.properties.clusterData = clusterData;\n if (field && method) {\n const columnData = clusterData?.map((item: any) => {\n const data = {\n [field]: item.properties[field],\n };\n return data;\n });\n const column = Satistics.getColumn(columnData as any, field);\n const stat = Satistics.getSatByColumn(method, column);\n const fieldName = 'point_' + method;\n feature.properties[fieldName] = stat.toFixed(2);\n }\n }\n const marker = this.clusterMarker(feature);\n this.clusterMarkers.push(marker);\n marker.addTo(this.scene);\n });\n }\n private getLeaves(\n clusterId: number,\n limit: number = Infinity,\n offset: number = 0,\n ) {\n if (!clusterId) {\n return null;\n }\n return this.clusterIndex.getLeaves(clusterId, limit, offset);\n }\n private clusterMarker(feature: any) {\n const clusterOption = this.markerLayerOption.clusterOption;\n\n const {\n element = this.generateElement.bind(this),\n } = clusterOption as IMarkerStyleOption;\n const marker = new Marker({\n element: element(feature),\n }).setLnglat({\n lng: feature.geometry.coordinates[0],\n lat: feature.geometry.coordinates[1],\n });\n return marker;\n }\n private normalMarker(feature: any) {\n const marker_id = feature.properties.marker_id;\n return this.markers[marker_id];\n }\n\n private update() {\n if (!this.mapsService) {\n return;\n }\n const zoom = this.mapsService.getZoom();\n const bbox = this.mapsService.getBounds();\n if (\n !this.bbox ||\n Math.abs(zoom - this.zoom) >= 1 ||\n !boundsContains(this.bbox, bbox)\n ) {\n this.bbox = padBounds(bbox, 0.5);\n this.zoom = Math.floor(zoom);\n this.getClusterMarker(this.bbox, this.zoom);\n }\n }\n\n private generateElement(feature: any) {\n const el = DOM.create('div', 'l7-marker-cluster');\n const label = DOM.create('div', '', el);\n const span = DOM.create('span', '', label);\n const { field, method } = this.markerLayerOption.clusterOption;\n feature.properties.point_count = feature.properties.point_count || 1;\n\n const text =\n field && method\n ? feature.properties['point_' + method] || feature.properties[field]\n : feature.properties.point_count;\n span.textContent = text;\n return el;\n }\n}\n"],"file":"markerlayer.js"}