@bluehalo/ngx-leaflet 18.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGES.md +89 -0
- package/LICENSE +22 -0
- package/README.md +728 -0
- package/esm2022/bluehalo-ngx-leaflet.mjs +5 -0
- package/esm2022/lib/core/leaflet.directive.mjs +330 -0
- package/esm2022/lib/core/leaflet.directive.wrapper.mjs +12 -0
- package/esm2022/lib/core/leaflet.util.mjs +20 -0
- package/esm2022/lib/layers/base/leaflet-baselayers.directive.mjs +113 -0
- package/esm2022/lib/layers/control/leaflet-control-layers-changes.model.mjs +11 -0
- package/esm2022/lib/layers/control/leaflet-control-layers-config.model.mjs +7 -0
- package/esm2022/lib/layers/control/leaflet-control-layers.directive.mjs +100 -0
- package/esm2022/lib/layers/control/leaflet-control-layers.wrapper.mjs +58 -0
- package/esm2022/lib/layers/leaflet-layer.directive.mjs +78 -0
- package/esm2022/lib/layers/leaflet-layers.directive.mjs +83 -0
- package/esm2022/lib/layers/leaflet-tile-layer-definition.model.mjs +53 -0
- package/esm2022/lib/leaflet.module.mjs +40 -0
- package/esm2022/public-api.mjs +13 -0
- package/fesm2022/bluehalo-ngx-leaflet.mjs +880 -0
- package/fesm2022/bluehalo-ngx-leaflet.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/core/leaflet.directive.d.ts +94 -0
- package/lib/core/leaflet.directive.wrapper.d.ts +8 -0
- package/lib/core/leaflet.util.d.ts +7 -0
- package/lib/layers/base/leaflet-baselayers.directive.d.ts +45 -0
- package/lib/layers/control/leaflet-control-layers-changes.model.d.ts +6 -0
- package/lib/layers/control/leaflet-control-layers-config.model.d.ts +9 -0
- package/lib/layers/control/leaflet-control-layers.directive.d.ts +35 -0
- package/lib/layers/control/leaflet-control-layers.wrapper.d.ts +14 -0
- package/lib/layers/leaflet-layer.directive.d.ts +30 -0
- package/lib/layers/leaflet-layers.directive.d.ts +41 -0
- package/lib/layers/leaflet-tile-layer-definition.model.d.ts +33 -0
- package/lib/leaflet.module.d.ts +11 -0
- package/package.json +34 -0
- package/public-api.d.ts +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bluehalo-ngx-leaflet.mjs","sources":["../../../projects/ngx-leaflet/src/lib/core/leaflet.util.ts","../../../projects/ngx-leaflet/src/lib/core/leaflet.directive.ts","../../../projects/ngx-leaflet/src/lib/core/leaflet.directive.wrapper.ts","../../../projects/ngx-leaflet/src/lib/layers/leaflet-layer.directive.ts","../../../projects/ngx-leaflet/src/lib/layers/leaflet-layers.directive.ts","../../../projects/ngx-leaflet/src/lib/layers/control/leaflet-control-layers-changes.model.ts","../../../projects/ngx-leaflet/src/lib/layers/control/leaflet-control-layers.wrapper.ts","../../../projects/ngx-leaflet/src/lib/layers/control/leaflet-control-layers-config.model.ts","../../../projects/ngx-leaflet/src/lib/layers/control/leaflet-control-layers.directive.ts","../../../projects/ngx-leaflet/src/lib/layers/base/leaflet-baselayers.directive.ts","../../../projects/ngx-leaflet/src/lib/leaflet.module.ts","../../../projects/ngx-leaflet/src/lib/layers/leaflet-tile-layer-definition.model.ts","../../../projects/ngx-leaflet/src/bluehalo-ngx-leaflet.ts"],"sourcesContent":["import { EventEmitter, NgZone } from '@angular/core';\n\nexport class LeafletUtil {\n\n\tstatic mapToArray<T>(map: { [ key: string ]: T }): T[] {\n\t\tconst toReturn: T[] = [];\n\n\t\tfor (const k in map) {\n\t\t\tif (map.hasOwnProperty(k)) {\n\t\t\t\ttoReturn.push(map[k]);\n\t\t\t}\n\t\t}\n\n\t\treturn toReturn;\n\t}\n\n\tstatic handleEvent<T>(zone: NgZone, eventEmitter: EventEmitter<T>, event: T) {\n\n\t\t// Don't want to emit if there are no observers\n\t\tif (0 < eventEmitter.observers.length) {\n\t\t\tzone.run(() => {\n\t\t\t\teventEmitter.emit(event);\n\t\t\t});\n\t\t}\n\n\t}\n}\n","import {\n\tDirective, ElementRef, EventEmitter, HostListener, Input, NgZone, OnChanges, OnDestroy, OnInit, Output,\n\tSimpleChange\n} from '@angular/core';\n\nimport { latLng, LatLng, LatLngBounds, LeafletEvent, LeafletMouseEvent, map, Map, MapOptions } from 'leaflet';\n\nimport { LeafletUtil } from './leaflet.util';\n\n@Directive({\n\tselector: '[leaflet]'\n})\nexport class LeafletDirective\n\timplements OnChanges, OnDestroy, OnInit {\n\n\treadonly DEFAULT_ZOOM = 1;\n\treadonly DEFAULT_CENTER = latLng(38.907192, -77.036871);\n\treadonly DEFAULT_FPZ_OPTIONS = {};\n\n\tresizeTimer: any;\n\n\t// Reference to the primary map object\n\tmap: Map;\n\n\t@Input('leafletFitBoundsOptions') fitBoundsOptions = this.DEFAULT_FPZ_OPTIONS;\n\t@Input('leafletPanOptions') panOptions = this.DEFAULT_FPZ_OPTIONS;\n\t@Input('leafletZoomOptions') zoomOptions = this.DEFAULT_FPZ_OPTIONS;\n\t@Input('leafletZoomPanOptions') zoomPanOptions = this.DEFAULT_FPZ_OPTIONS;\n\n\n\t// Default configuration\n\t@Input('leafletOptions') options: MapOptions = {};\n\n\t// Configure callback function for the map\n\t@Output('leafletMapReady') mapReady = new EventEmitter<Map>();\n\n\t// Zoom level for the map\n\t@Input('leafletZoom') zoom: number;\n\t@Output('leafletZoomChange') zoomChange = new EventEmitter<number>();\n\n\t// Center of the map\n\t@Input('leafletCenter') center: LatLng;\n\t@Output('leafletCenterChange') centerChange = new EventEmitter<LatLng>();\n\n\t// Set fit bounds for map\n\t@Input('leafletFitBounds') fitBounds: LatLngBounds;\n\n\t// Set the max bounds for the map\n\t@Input('leafletMaxBounds') maxBounds: LatLngBounds;\n\n\t// Set the min zoom for the map\n\t@Input('leafletMinZoom') minZoom: number;\n\n\t// Set the max zoom for the map\n\t@Input('leafletMaxZoom') maxZoom: number;\n\n\n\t// Mouse Map Events\n\t@Output('leafletClick') onClick = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletDoubleClick') onDoubleClick = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseDown') onMouseDown = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseUp') onMouseUp = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseMove') onMouseMove = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseOver') onMouseOver = new EventEmitter<LeafletMouseEvent>();\n\t@Output('leafletMouseOut') onMouseOut = new EventEmitter<LeafletMouseEvent>();\n\n\t// Map Move Events\n\t@Output('leafletMapMove') onMapMove = new EventEmitter<LeafletEvent>();\n\t@Output('leafletMapMoveStart') onMapMoveStart = new EventEmitter<LeafletEvent>();\n\t@Output('leafletMapMoveEnd') onMapMoveEnd = new EventEmitter<LeafletEvent>();\n\n\t// Map Zoom Events\n\t@Output('leafletMapZoom') onMapZoom = new EventEmitter<LeafletEvent>();\n\t@Output('leafletMapZoomStart') onMapZoomStart = new EventEmitter<LeafletEvent>();\n\t@Output('leafletMapZoomEnd') onMapZoomEnd = new EventEmitter<LeafletEvent>();\n\n\tconstructor(private element: ElementRef, private zone: NgZone) {\n\t\t// Nothing here\n\t}\n\n\tngOnInit() {\n\n\t\t// Create the map outside of angular so the various map events don't trigger change detection\n\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t// Create the map with some reasonable defaults\n\t\t\tthis.map = map(this.element.nativeElement, this.options);\n\t\t\tthis.addMapEventListeners();\n\n\t\t});\n\n\t\t// Only setView if there is a center/zoom\n\t\tif (null != this.center && null != this.zoom) {\n\t\t\tthis.setView(this.center, this.zoom);\n\t\t}\n\n\t\t// Set up all the initial settings\n\t\tif (null != this.fitBounds) {\n\t\t\tthis.setFitBounds(this.fitBounds);\n\t\t}\n\n\t\tif (null != this.maxBounds) {\n\t\t\tthis.setMaxBounds(this.maxBounds);\n\t\t}\n\n\t\tif (null != this.minZoom) {\n\t\t\tthis.setMinZoom(this.minZoom);\n\t\t}\n\n\t\tif (null != this.maxZoom) {\n\t\t\tthis.setMaxZoom(this.maxZoom);\n\t\t}\n\n\t\tthis.doResize();\n\n\t\t// Fire map ready event\n\t\tthis.mapReady.emit(this.map);\n\n\t}\n\n\tngOnChanges(changes: { [key: string]: SimpleChange }) {\n\n\t\t/*\n\t\t * The following code is to address an issue with our (basic) implementation of\n\t\t * zooming and panning. From our testing, it seems that a pan operation followed\n\t\t * by a zoom operation in the same thread will interfere with eachother. The zoom\n\t\t * operation interrupts/cancels the pan, resulting in a final center point that is\n\t\t * inaccurate. The solution seems to be to either separate them with a timeout or\n\t\t * to collapse them into a setView call.\n\t\t */\n\n\t\t// Zooming and Panning\n\t\tif (changes['zoom'] && changes['center'] && null != this.zoom && null != this.center) {\n\t\t\tthis.setView(changes['center'].currentValue, changes['zoom'].currentValue);\n\t\t}\n\t\t// Set the zoom level\n\t\telse if (changes['zoom']) {\n\t\t\tthis.setZoom(changes['zoom'].currentValue);\n\t\t}\n\t\t// Set the map center\n\t\telse if (changes['center']) {\n\t\t\tthis.setCenter(changes['center'].currentValue);\n\t\t}\n\n\t\t// Other options\n\t\tif (changes['fitBounds']) {\n\t\t\tthis.setFitBounds(changes['fitBounds'].currentValue);\n\t\t}\n\n\t\tif (changes['maxBounds']) {\n\t\t\tthis.setMaxBounds(changes['maxBounds'].currentValue);\n\t\t}\n\n\t\tif (changes['minZoom']) {\n\t\t\tthis.setMinZoom(changes['minZoom'].currentValue);\n\t\t}\n\n\t\tif (changes['maxZoom']) {\n\t\t\tthis.setMaxZoom(changes['maxZoom'].currentValue);\n\t\t}\n\n\t}\n\n\tngOnDestroy() {\n\t\t// If this directive is destroyed, the map is too\n\t\tif (null != this.map) {\n\t\t\tthis.map.remove();\n\t\t}\n\t}\n\n\tpublic getMap() {\n\t\treturn this.map;\n\t}\n\n\n\t@HostListener('window:resize', [])\n\tonResize() {\n\t\tthis.delayResize();\n\t}\n\n\tprivate addMapEventListeners() {\n\n\t\tconst registerEventHandler = (eventName: string, handler: (e: LeafletEvent) => any) => {\n\t\t\tthis.map.on(eventName, handler);\n\t\t};\n\n\n\t\t// Add all the pass-through mouse event handlers\n\t\tregisterEventHandler('click', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onClick, e));\n\t\tregisterEventHandler('dblclick', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onDoubleClick, e));\n\t\tregisterEventHandler('mousedown', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseDown, e));\n\t\tregisterEventHandler('mouseup', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseUp, e));\n\t\tregisterEventHandler('mouseover', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseOver, e));\n\t\tregisterEventHandler('mouseout', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseOut, e));\n\t\tregisterEventHandler('mousemove', (e: LeafletMouseEvent) => LeafletUtil.handleEvent(this.zone, this.onMouseMove, e));\n\n\t\tregisterEventHandler('zoomstart', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapZoomStart, e));\n\t\tregisterEventHandler('zoom', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapZoom, e));\n\t\tregisterEventHandler('zoomend', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapZoomEnd, e));\n\t\tregisterEventHandler('movestart', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapMoveStart, e));\n\t\tregisterEventHandler('move', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapMove, e));\n\t\tregisterEventHandler('moveend', (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onMapMoveEnd, e));\n\n\n\t\t// Update any things for which we provide output bindings\n\t\tconst outputUpdateHandler = () => {\n\t\t\tconst zoom = this.map.getZoom();\n\t\t\tif (zoom !== this.zoom) {\n\t\t\t\tthis.zoom = zoom;\n\t\t\t\tLeafletUtil.handleEvent(this.zone, this.zoomChange, zoom);\n\t\t\t}\n\n\t\t\tconst center = this.map.getCenter();\n\t\t\tif (null != center || null != this.center) {\n\n\t\t\t\tif (((null == center || null == this.center) && center !== this.center)\n\t\t\t\t\t|| (center.lat !== this.center.lat || center.lng !== this.center.lng)) {\n\n\t\t\t\t\tthis.center = center;\n\t\t\t\t\tLeafletUtil.handleEvent(this.zone, this.centerChange, center);\n\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tregisterEventHandler('moveend', outputUpdateHandler);\n\t\tregisterEventHandler('zoomend', outputUpdateHandler);\n\t}\n\n\t/**\n\t * Resize the map to fit it's parent container\n\t */\n\tprivate doResize() {\n\n\t\t// Run this outside of angular so the map events stay outside of angular\n\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t// Invalidate the map size to trigger it to update itself\n\t\t\tif (null != this.map) {\n\t\t\t\tthis.map.invalidateSize({});\n\t\t\t}\n\n\t\t});\n\n\t}\n\n\t/**\n\t * Manage a delayed resize of the component\n\t */\n\tprivate delayResize() {\n\t\tif (null != this.resizeTimer) {\n\t\t\tclearTimeout(this.resizeTimer);\n\t\t}\n\t\tthis.resizeTimer = setTimeout(this.doResize.bind(this), 200);\n\t}\n\n\n\t/**\n\t * Set the view (center/zoom) all at once\n\t * @param center The new center\n\t * @param zoom The new zoom level\n\t */\n\tprivate setView(center: LatLng, zoom: number) {\n\n\t\tif (null != this.map && null != center && null != zoom) {\n\t\t\tthis.map.setView(center, zoom, this.zoomPanOptions);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the map zoom level\n\t * @param zoom the new zoom level for the map\n\t */\n\tprivate setZoom(zoom: number) {\n\n\t\tif (null != this.map && null != zoom) {\n\t\t\tthis.map.setZoom(zoom, this.zoomOptions);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the center of the map\n\t * @param center the center point\n\t */\n\tprivate setCenter(center: LatLng) {\n\n\t\tif (null != this.map && null != center) {\n\t\t\tthis.map.panTo(center, this.panOptions);\n\t\t}\n\n\t}\n\n\t/**\n\t * Fit the map to the bounds\n\t * @param latLngBounds the boundary to set\n\t */\n\tprivate setFitBounds(latLngBounds: LatLngBounds) {\n\n\t\tif (null != this.map && null != latLngBounds) {\n\t\t\tthis.map.fitBounds(latLngBounds, this.fitBoundsOptions);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the map's max bounds\n\t * @param latLngBounds the boundary to set\n\t */\n\tprivate setMaxBounds(latLngBounds: LatLngBounds) {\n\n\t\tif (null != this.map && null != latLngBounds) {\n\t\t\tthis.map.setMaxBounds(latLngBounds);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the map's min zoom\n\t * @param number the new min zoom\n\t */\n\tprivate setMinZoom(zoom: number) {\n\n\t\tif (null != this.map && null != zoom) {\n\t\t\tthis.map.setMinZoom(zoom);\n\t\t}\n\n\t}\n\n\t/**\n\t * Set the map's min zoom\n\t * @param number the new min zoom\n\t */\n\tprivate setMaxZoom(zoom: number) {\n\n\t\tif (null != this.map && null != zoom) {\n\t\t\tthis.map.setMaxZoom(zoom);\n\t\t}\n\n\t}\n\n}\n","import { LeafletDirective } from './leaflet.directive';\n\nimport { Map } from 'leaflet';\n\nexport class LeafletDirectiveWrapper {\n\n\t// Reference to the main leaflet directive\n\tprotected leafletDirective: LeafletDirective;\n\n\tconstructor(leafletDirective: LeafletDirective) {\n\t\tthis.leafletDirective = leafletDirective;\n\t}\n\n\tinit() {\n\t\t// Nothing for now\n\t}\n\n\tgetMap(): Map {\n\t\treturn this.leafletDirective.getMap();\n\t}\n\n}\n","import {\n\tDirective, EventEmitter, Input, NgZone, OnChanges, OnDestroy, OnInit, Output,\n\tSimpleChange\n} from '@angular/core';\n\nimport { Layer, LeafletEvent } from 'leaflet';\n\nimport { LeafletDirective } from '../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../core/leaflet.directive.wrapper';\nimport { LeafletUtil } from '../core/leaflet.util';\n\n\n/**\n * Layer directive\n *\n * This directive is used to directly control a single map layer. The purpose of this directive is to\n * be used as part of a child structural directive of the map element.\n *\n */\n@Directive({\n\tselector: '[leafletLayer]'\n})\nexport class LeafletLayerDirective\n\timplements OnChanges, OnDestroy, OnInit {\n\n\t@Input('leafletLayer') layer: Layer;\n\n\t// Layer Events\n\t@Output('leafletLayerAdd') onAdd = new EventEmitter<LeafletEvent>();\n\t@Output('leafletLayerRemove') onRemove = new EventEmitter<LeafletEvent>();\n\n\t// Layer Event handlers\n\tprivate onAddLayerHandler: any;\n\tprivate onRemoveLayerHandler: any;\n\n\t// Wrapper for the leaflet directive (manages the parent directive)\n\tprivate leafletDirective: LeafletDirectiveWrapper;\n\n\tconstructor(leafletDirective: LeafletDirective, private zone: NgZone) {\n\t\tthis.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n\t}\n\n\tngOnInit() {\n\n\t\t// Init the map\n\t\tthis.leafletDirective.init();\n\n\t}\n\n\tngOnDestroy() {\n\n\t\tif (null != this.layer) {\n\n\t\t\t// Unregister the event handlers\n\t\t\tthis.removeLayerEventListeners(this.layer);\n\n\t\t\t// Remove the layer from the map\n\t\t\tthis.layer.remove();\n\t\t}\n\n\t}\n\n\tngOnChanges(changes: { [key: string]: SimpleChange }) {\n\n\t\tif (changes['layer']) {\n\n\t\t\t// Update the layer\n\t\t\tconst p: Layer = changes['layer'].previousValue;\n\t\t\tconst n = changes['layer'].currentValue;\n\n\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\tif (null != p) {\n\t\t\t\t\tthis.removeLayerEventListeners(p);\n\t\t\t\t\tp.remove();\n\t\t\t\t}\n\t\t\t\tif (null != n) {\n\t\t\t\t\tthis.addLayerEventListeners(n);\n\t\t\t\t\tthis.leafletDirective.getMap().addLayer(n);\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t}\n\n\tprivate addLayerEventListeners(l: Layer) {\n\n\t\tthis.onAddLayerHandler = (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onAdd, e);\n\t\tl.on('add', this.onAddLayerHandler);\n\n\t\tthis.onRemoveLayerHandler = (e: LeafletEvent) => LeafletUtil.handleEvent(this.zone, this.onRemove, e);\n\t\tl.on('remove', this.onRemoveLayerHandler);\n\n\t}\n\n\tprivate removeLayerEventListeners(l: Layer) {\n\n\t\tl.off('add', this.onAddLayerHandler);\n\t\tl.off('remove', this.onRemoveLayerHandler);\n\n\t}\n\n}\n","import { Directive, DoCheck, Input, IterableDiffer, IterableDiffers, NgZone, OnDestroy, OnInit } from '@angular/core';\n\nimport { Layer} from 'leaflet';\n\nimport { LeafletDirective } from '../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../core/leaflet.directive.wrapper';\n\n\n/**\n * Layers directive\n *\n * This directive is used to directly control map layers. As changes are made to the input array of\n * layers, the map is synched to the array. As layers are added or removed from the input array, they\n * are also added or removed from the map. The input array is treated as immutable. To detect changes,\n * you must change the array instance.\n *\n * Important Note: The input layers array is assumed to be immutable. This means you need to use an\n * immutable array implementation or create a new copy of your array when you make changes, otherwise\n * this directive won't detect the change. This is by design. It's for performance reasons. Change\n * detection of mutable arrays requires diffing the state of the array on every DoCheck cycle, which\n * is extremely expensive from a time complexity perspective.\n *\n */\n@Directive({\n\tselector: '[leafletLayers]'\n})\nexport class LeafletLayersDirective\n\timplements DoCheck, OnDestroy, OnInit {\n\n\t// Array of configured layers\n\tlayersValue: Layer[];\n\n\t// Differ to do change detection on the array\n\tlayersDiffer: IterableDiffer<Layer>;\n\n\t// Set/get the layers\n\t@Input('leafletLayers')\n\tset layers(v: Layer[]) {\n\t\tthis.layersValue = v;\n\n\t\t// Now that we have a differ, do an immediate layer update\n\t\tthis.updateLayers();\n\t}\n\tget layers(): Layer[] {\n\t\treturn this.layersValue;\n\t}\n\n\t// Wrapper for the leaflet directive (manages the parent directive)\n\tprivate leafletDirective: LeafletDirectiveWrapper;\n\n\tconstructor(leafletDirective: LeafletDirective, private differs: IterableDiffers, private zone: NgZone) {\n\t\tthis.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n\t\tthis.layersDiffer = this.differs.find([]).create<Layer>();\n\t}\n\n\tngDoCheck() {\n\t\tthis.updateLayers();\n\t}\n\n\tngOnInit() {\n\n\t\t// Init the map\n\t\tthis.leafletDirective.init();\n\n\t\t// Update layers once the map is ready\n\t\tthis.updateLayers();\n\n\t}\n\n\tngOnDestroy() {\n\t\tthis.layers = [];\n\t}\n\n\t/**\n\t * Update the state of the layers.\n\t * We use an iterable differ to synchronize the map layers with the state of the bound layers array.\n\t * This is important because it allows us to react to changes to the contents of the array as well\n\t * as changes to the actual array instance.\n\t */\n\tprivate updateLayers() {\n\n\t\tconst map = this.leafletDirective.getMap();\n\n\t\tif (null != map && null != this.layersDiffer) {\n\n\t\t\tconst changes = this.layersDiffer.diff(this.layersValue);\n\t\t\tif (null != changes) {\n\n\t\t\t\t// Run outside angular to ensure layer events don't trigger change detection\n\t\t\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t\t\tchanges.forEachRemovedItem((c) => {\n\t\t\t\t\t\tmap.removeLayer(c.item);\n\t\t\t\t\t});\n\t\t\t\t\tchanges.forEachAddedItem((c) => {\n\t\t\t\t\t\tmap.addLayer(c.item);\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","export class LeafletControlLayersChanges {\n\tlayersRemoved: number = 0;\n\tlayersChanged: number = 0;\n\tlayersAdded: number = 0;\n\n\tchanged(): boolean {\n\t\treturn !(this.layersRemoved === 0 && this.layersChanged === 0 && this.layersAdded === 0);\n\t}\n}\n","import { EventEmitter, KeyValueChanges, NgZone } from '@angular/core';\n\nimport { control, Control, Layer } from 'leaflet';\n\nimport { LeafletControlLayersChanges } from './leaflet-control-layers-changes.model';\n\nexport class LeafletControlLayersWrapper {\n\n\t// The layers control object\n\tprotected layersControl: Control.Layers;\n\n\t// Event Emitter for when the control is ready\n\tprotected layersControlReady: EventEmitter<Control.Layers>;\n\n\tconstructor(private zone: NgZone, layersControlReady: EventEmitter<Control.Layers>) {\n\t\tthis.layersControlReady = layersControlReady;\n\t}\n\n\tgetLayersControl() {\n\t\treturn this.layersControl;\n\t}\n\n\tinit(controlConfig: any, controlOptions: any): Control.Layers {\n\n\t\tconst baseLayers = controlConfig.baseLayers || {};\n\t\tconst overlays = controlConfig.overlays || {};\n\n\t\t// Create the control outside of angular to ensure events don't trigger change detection\n\t\tthis.zone.runOutsideAngular(() => {\n\t\t\tthis.layersControl = control.layers(baseLayers, overlays, controlOptions);\n\t\t});\n\n\n\t\tthis.layersControlReady.emit(this.layersControl);\n\n\t\treturn this.layersControl;\n\t}\n\n\tapplyBaseLayerChanges(changes: KeyValueChanges<string, Layer>): LeafletControlLayersChanges {\n\t\tlet results: LeafletControlLayersChanges = new LeafletControlLayersChanges();\n\n\t\tif (null != this.layersControl) {\n\t\t\tresults = this.applyChanges(changes, this.layersControl.addBaseLayer);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tapplyOverlayChanges(changes: KeyValueChanges<string, Layer>): LeafletControlLayersChanges {\n\t\tlet results: LeafletControlLayersChanges = new LeafletControlLayersChanges();\n\n\t\tif (null != this.layersControl) {\n\t\t\tresults = this.applyChanges(changes, this.layersControl.addOverlay);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tprivate applyChanges(changes: KeyValueChanges<string, Layer>, addFn: (layer: Layer, name: string) => void): LeafletControlLayersChanges {\n\t\tconst results: LeafletControlLayersChanges = new LeafletControlLayersChanges();\n\n\t\tif (null != changes) {\n\n\t\t\t// All layer management is outside angular to avoid layer events from triggering change detection\n\t\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t\tchanges.forEachChangedItem((c) => {\n\t\t\t\t\tthis.layersControl.removeLayer(c.previousValue);\n\t\t\t\t\taddFn.call(this.layersControl, c.currentValue, c.key);\n\t\t\t\t\tresults.layersChanged++;\n\t\t\t\t});\n\t\t\t\tchanges.forEachRemovedItem((c) => {\n\t\t\t\t\tthis.layersControl.removeLayer(c.previousValue);\n\t\t\t\t\tresults.layersRemoved++;\n\t\t\t\t});\n\t\t\t\tchanges.forEachAddedItem((c) => {\n\t\t\t\t\taddFn.call(this.layersControl, c.currentValue, c.key);\n\t\t\t\t\tresults.layersAdded++;\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t}\n\n\t\treturn results;\n\t}\n\n}\n","import { Layer } from 'leaflet';\n\nexport class LeafletControlLayersConfig {\n\tbaseLayers: { [name: string]: Layer } = {};\n\toverlays: { [name: string]: Layer } = {};\n}\n","import {\n\tDirective, DoCheck, EventEmitter, Input, KeyValueDiffer, KeyValueDiffers, NgZone, OnDestroy, OnInit,\n\tOutput\n} from '@angular/core';\n\nimport { Control, Layer } from 'leaflet';\n\nimport { LeafletDirective } from '../../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../../core/leaflet.directive.wrapper';\nimport { LeafletControlLayersWrapper } from './leaflet-control-layers.wrapper';\nimport { LeafletControlLayersConfig } from './leaflet-control-layers-config.model';\n\n\n/**\n * Layers Control\n *\n * This directive is used to configure the layers control. The input accepts an object with two\n * key-value maps of layer name -> layer. Mutable changes are detected. On changes, a differ is\n * used to determine what changed so that layers are appropriately added or removed.\n *\n * To specify which layer to show as the 'active' baselayer, you will want to add it to the map\n * using the layers directive. Otherwise, the last one it sees will be used.\n */\n@Directive({\n\tselector: '[leafletLayersControl]'\n})\nexport class LeafletLayersControlDirective\n\timplements DoCheck, OnDestroy, OnInit {\n\n\t// Control Layers Configuration\n\tlayersControlConfigValue: LeafletControlLayersConfig;\n\n\tbaseLayersDiffer: KeyValueDiffer<string, Layer>;\n\toverlaysDiffer: KeyValueDiffer<string, Layer>;\n\n\t@Input('leafletLayersControl')\n\tset layersControlConfig(v: LeafletControlLayersConfig) {\n\n\t\t// Validation/init stuff\n\t\tif (null == v) { v = new LeafletControlLayersConfig(); }\n\t\tif (null == v.baseLayers) { v.baseLayers = {}; }\n\t\tif (null == v.overlays) { v.overlays = {}; }\n\n\t\t// Store the value\n\t\tthis.layersControlConfigValue = v;\n\n\t\t// Update the map\n\t\tthis.updateLayers();\n\n\t}\n\tget layersControlConfig(): LeafletControlLayersConfig {\n\t\treturn this.layersControlConfigValue;\n\t}\n\n\t@Input('leafletLayersControlOptions') layersControlOptions: any;\n\n\t@Output('leafletLayersControlReady') layersControlReady = new EventEmitter<Control.Layers>();\n\n\tprivate controlLayers: LeafletControlLayersWrapper;\n\tprivate leafletDirective: LeafletDirectiveWrapper;\n\n\tconstructor(leafletDirective: LeafletDirective, private differs: KeyValueDiffers, private zone: NgZone) {\n\t\tthis.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n\t\tthis.controlLayers = new LeafletControlLayersWrapper(this.zone, this.layersControlReady);\n\n\t\t// Generate differs\n\t\tthis.baseLayersDiffer = this.differs.find({}).create<string, Layer>();\n\t\tthis.overlaysDiffer = this.differs.find({}).create<string, Layer>();\n\n\t}\n\n\tngOnInit() {\n\n\t\t// Init the map\n\t\tthis.leafletDirective.init();\n\n\t\t// Set up control outside of angular to avoid change detection when using the control\n\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t// Set up all the initial settings\n\t\t\tthis.controlLayers\n\t\t\t\t.init({}, this.layersControlOptions)\n\t\t\t\t.addTo(this.leafletDirective.getMap());\n\n\t\t});\n\n\t\tthis.updateLayers();\n\n\t}\n\n\tngOnDestroy() {\n\t\tthis.layersControlConfig = { baseLayers: {}, overlays: {} };\n\t\tthis.controlLayers.getLayersControl().remove();\n\t}\n\n\tngDoCheck() {\n\t\tthis.updateLayers();\n\t}\n\n\tprotected updateLayers() {\n\n\t\tconst map = this.leafletDirective.getMap();\n\t\tconst layersControl = this.controlLayers.getLayersControl();\n\n\t\tif (null != map && null != layersControl) {\n\n\t\t\t// Run the baselayers differ\n\t\t\tif (null != this.baseLayersDiffer && null != this.layersControlConfigValue.baseLayers) {\n\t\t\t\tconst changes = this.baseLayersDiffer.diff(this.layersControlConfigValue.baseLayers);\n\t\t\t\tthis.controlLayers.applyBaseLayerChanges(changes);\n\t\t\t}\n\n\t\t\t// Run the overlays differ\n\t\t\tif (null != this.overlaysDiffer && null != this.layersControlConfigValue.overlays) {\n\t\t\t\tconst changes = this.overlaysDiffer.diff(this.layersControlConfigValue.overlays);\n\t\t\t\tthis.controlLayers.applyOverlayChanges(changes);\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n","import {\n\tDirective, DoCheck, EventEmitter, Input, KeyValueDiffer, KeyValueDiffers, NgZone, OnDestroy,\n\tOnInit, Output\n} from '@angular/core';\n\nimport { Control, Layer } from 'leaflet';\n\nimport { LeafletUtil } from '../../core/leaflet.util';\nimport { LeafletDirective } from '../../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../../core/leaflet.directive.wrapper';\nimport { LeafletControlLayersWrapper } from '../control/leaflet-control-layers.wrapper';\n\n\n/**\n * Baselayers directive\n *\n * This directive is provided as a convenient way to add baselayers to the map. The input accepts\n * a key-value map of layer name -> layer. Mutable changed are detected. On changes, a differ is\n * used to determine what changed so that layers are appropriately added or removed. This directive\n * will also add the layers control so users can switch between available base layers.\n *\n * To specify which layer to show as the 'active' baselayer, you will want to add it to the map\n * using the layers directive. Otherwise, the plugin will use the last one it sees.\n */\n@Directive({\n\tselector: '[leafletBaseLayers]'\n})\nexport class LeafletBaseLayersDirective\n\timplements DoCheck, OnDestroy, OnInit {\n\n\t// Base Layers\n\tbaseLayersValue: { [name: string]: Layer };\n\n\t// Base Layers Map Differ\n\tbaseLayersDiffer: KeyValueDiffer<string, Layer>;\n\n\t// Set/get baseLayers\n\t@Input('leafletBaseLayers')\n\tset baseLayers(v: { [name: string]: Layer }) {\n\t\tthis.baseLayersValue = v;\n\n\t\tthis.updateBaseLayers();\n\t}\n\tget baseLayers(): { [name: string]: Layer } {\n\t\treturn this.baseLayersValue;\n\t}\n\n\t// Control Options\n\t@Input('leafletLayersControlOptions') layersControlOptions: Control.LayersOptions;\n\n\t// Output for once the layers control is ready\n\t@Output('leafletLayersControlReady') layersControlReady = new EventEmitter<Control.Layers>();\n\n\t// Active Base Layer\n\tprivate baseLayer: Layer;\n\n\tprivate leafletDirective: LeafletDirectiveWrapper;\n\tprivate controlLayers: LeafletControlLayersWrapper;\n\n\tconstructor(leafletDirective: LeafletDirective, private differs: KeyValueDiffers, private zone: NgZone) {\n\t\tthis.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n\t\tthis.controlLayers = new LeafletControlLayersWrapper(this.zone, this.layersControlReady);\n\t\tthis.baseLayersDiffer = this.differs.find({}).create<string, Layer>();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.baseLayers = {};\n\t\tif (null != this.controlLayers.getLayersControl()) {\n\t\t\tthis.controlLayers.getLayersControl().remove();\n\t\t}\n\t}\n\n\tngOnInit() {\n\n\t\t// Init the map\n\t\tthis.leafletDirective.init();\n\n\t\t// Create the control outside angular to prevent events from triggering chnage detection\n\t\tthis.zone.runOutsideAngular(() => {\n\n\t\t\t// Initially configure the controlLayers\n\t\t\tthis.controlLayers\n\t\t\t\t.init({}, this.layersControlOptions)\n\t\t\t\t.addTo(this.leafletDirective.getMap());\n\n\t\t});\n\n\t\tthis.updateBaseLayers();\n\n\t}\n\n\tngDoCheck() {\n\t\tthis.updateBaseLayers();\n\t}\n\n\tprotected updateBaseLayers() {\n\n\t\tconst map = this.leafletDirective.getMap();\n\t\tconst layersControl = this.controlLayers.getLayersControl();\n\n\t\tif (null != map && null != layersControl && null != this.baseLayersDiffer) {\n\t\t\tconst changes = this.baseLayersDiffer.diff(this.baseLayersValue);\n\t\t\tconst results = this.controlLayers.applyBaseLayerChanges(changes);\n\n\t\t\tif (results.changed()) {\n\t\t\t\tthis.syncBaseLayer();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Check the current base layer and change it to the new one if necessary\n\t */\n\tprotected syncBaseLayer() {\n\n\t\tconst map = this.leafletDirective.getMap();\n\t\tconst layers = LeafletUtil.mapToArray(this.baseLayers);\n\t\tlet foundLayer: Layer;\n\n\t\t// Search all the layers in the map to see if we can find them in the baselayer array\n\t\tmap.eachLayer((l: Layer) => {\n\t\t\tfoundLayer = layers.find((bl) => (l === bl));\n\t\t});\n\n\t\t// Did we find the layer?\n\t\tif (null != foundLayer) {\n\t\t\t// Yes - set the baselayer to the one we found\n\t\t\tthis.baseLayer = foundLayer;\n\t\t}\n\t\telse {\n\t\t\t// No - set the baselayer to the first in the array and add it to the map\n\t\t\tif (layers.length > 0) {\n\t\t\t\tthis.baseLayer = layers[0];\n\n\t\t\t\t// Add layers outside of angular to prevent events from triggering change detection\n\t\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\t\tthis.baseLayer.addTo(map);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { LeafletDirective } from './core/leaflet.directive';\nimport { LeafletLayerDirective } from './layers/leaflet-layer.directive';\nimport { LeafletLayersDirective } from './layers/leaflet-layers.directive';\nimport { LeafletLayersControlDirective } from './layers/control/leaflet-control-layers.directive';\nimport { LeafletBaseLayersDirective } from './layers/base/leaflet-baselayers.directive';\n\n@NgModule({\n\texports: [\n\t\tLeafletDirective,\n\t\tLeafletLayerDirective,\n\t\tLeafletLayersDirective,\n\t\tLeafletLayersControlDirective,\n\t\tLeafletBaseLayersDirective\n\t],\n\tdeclarations: [\n\t\tLeafletDirective,\n\t\tLeafletLayerDirective,\n\t\tLeafletLayersDirective,\n\t\tLeafletLayersControlDirective,\n\t\tLeafletBaseLayersDirective\n\t]\n})\nexport class LeafletModule {\n\n}\n","import { tileLayer, TileLayer } from 'leaflet';\n\nexport class LeafletTileLayerDefinition {\n\n\tconstructor(\n\t\tpublic type: string,\n\t\tpublic url: string,\n\t\tpublic options: any) { }\n\n\n\t/**\n\t * Creates a TileLayer from the provided definition. This is a convenience function\n\t * to help with generating layers from objects.\n\t *\n\t * @param layerDef The layer to create\n\t * @returns {TileLayer} The TileLayer that has been created\n\t */\n\tstatic createTileLayer(layerDef: LeafletTileLayerDefinition): TileLayer {\n\t\tlet layer: TileLayer;\n\n\t\tswitch (layerDef.type) {\n\t\t\tcase 'xyz':\n\t\t\t\tlayer = tileLayer(layerDef.url, layerDef.options);\n\t\t\t\tbreak;\n\t\t\tcase 'wms':\n\t\t\tdefault:\n\t\t\t\tlayer = tileLayer.wms(layerDef.url, layerDef.options);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn layer;\n\t}\n\n\t/**\n\t * Creates a TileLayer for each key in the incoming map. This is a convenience function\n\t * for generating an associative array of layers from an associative array of objects\n\t *\n\t * @param layerDefs A map of key to tile layer definition\n\t * @returns {{[p: string]: TileLayer}} A new map of key to TileLayer\n\t */\n\tstatic createTileLayers(layerDefs: { [ key: string ]: LeafletTileLayerDefinition }): { [ key: string ]: TileLayer } {\n\t\tconst layers: { [ key: string ]: TileLayer } = {};\n\n\t\tfor (const k in layerDefs) {\n\t\t\tif (layerDefs.hasOwnProperty(k)) {\n\t\t\t\tlayers[k] = (LeafletTileLayerDefinition.createTileLayer(layerDefs[k]));\n\t\t\t}\n\t\t}\n\n\t\treturn layers;\n\t}\n\n\t/**\n\t * Create a Tile Layer from the current state of this object\n\t *\n\t * @returns {TileLayer} A new TileLayer\n\t */\n\tcreateTileLayer(): TileLayer {\n\t\treturn LeafletTileLayerDefinition.createTileLayer(this);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LeafletDirective"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, SimpleChange } from '@angular/core';
|
|
2
|
+
import { LatLng, LatLngBounds, LeafletEvent, LeafletMouseEvent, Map, MapOptions } from 'leaflet';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class LeafletDirective implements OnChanges, OnDestroy, OnInit {
|
|
5
|
+
private element;
|
|
6
|
+
private zone;
|
|
7
|
+
readonly DEFAULT_ZOOM = 1;
|
|
8
|
+
readonly DEFAULT_CENTER: LatLng;
|
|
9
|
+
readonly DEFAULT_FPZ_OPTIONS: {};
|
|
10
|
+
resizeTimer: any;
|
|
11
|
+
map: Map;
|
|
12
|
+
fitBoundsOptions: {};
|
|
13
|
+
panOptions: {};
|
|
14
|
+
zoomOptions: {};
|
|
15
|
+
zoomPanOptions: {};
|
|
16
|
+
options: MapOptions;
|
|
17
|
+
mapReady: EventEmitter<Map>;
|
|
18
|
+
zoom: number;
|
|
19
|
+
zoomChange: EventEmitter<number>;
|
|
20
|
+
center: LatLng;
|
|
21
|
+
centerChange: EventEmitter<LatLng>;
|
|
22
|
+
fitBounds: LatLngBounds;
|
|
23
|
+
maxBounds: LatLngBounds;
|
|
24
|
+
minZoom: number;
|
|
25
|
+
maxZoom: number;
|
|
26
|
+
onClick: EventEmitter<LeafletMouseEvent>;
|
|
27
|
+
onDoubleClick: EventEmitter<LeafletMouseEvent>;
|
|
28
|
+
onMouseDown: EventEmitter<LeafletMouseEvent>;
|
|
29
|
+
onMouseUp: EventEmitter<LeafletMouseEvent>;
|
|
30
|
+
onMouseMove: EventEmitter<LeafletMouseEvent>;
|
|
31
|
+
onMouseOver: EventEmitter<LeafletMouseEvent>;
|
|
32
|
+
onMouseOut: EventEmitter<LeafletMouseEvent>;
|
|
33
|
+
onMapMove: EventEmitter<LeafletEvent>;
|
|
34
|
+
onMapMoveStart: EventEmitter<LeafletEvent>;
|
|
35
|
+
onMapMoveEnd: EventEmitter<LeafletEvent>;
|
|
36
|
+
onMapZoom: EventEmitter<LeafletEvent>;
|
|
37
|
+
onMapZoomStart: EventEmitter<LeafletEvent>;
|
|
38
|
+
onMapZoomEnd: EventEmitter<LeafletEvent>;
|
|
39
|
+
constructor(element: ElementRef, zone: NgZone);
|
|
40
|
+
ngOnInit(): void;
|
|
41
|
+
ngOnChanges(changes: {
|
|
42
|
+
[key: string]: SimpleChange;
|
|
43
|
+
}): void;
|
|
44
|
+
ngOnDestroy(): void;
|
|
45
|
+
getMap(): Map;
|
|
46
|
+
onResize(): void;
|
|
47
|
+
private addMapEventListeners;
|
|
48
|
+
/**
|
|
49
|
+
* Resize the map to fit it's parent container
|
|
50
|
+
*/
|
|
51
|
+
private doResize;
|
|
52
|
+
/**
|
|
53
|
+
* Manage a delayed resize of the component
|
|
54
|
+
*/
|
|
55
|
+
private delayResize;
|
|
56
|
+
/**
|
|
57
|
+
* Set the view (center/zoom) all at once
|
|
58
|
+
* @param center The new center
|
|
59
|
+
* @param zoom The new zoom level
|
|
60
|
+
*/
|
|
61
|
+
private setView;
|
|
62
|
+
/**
|
|
63
|
+
* Set the map zoom level
|
|
64
|
+
* @param zoom the new zoom level for the map
|
|
65
|
+
*/
|
|
66
|
+
private setZoom;
|
|
67
|
+
/**
|
|
68
|
+
* Set the center of the map
|
|
69
|
+
* @param center the center point
|
|
70
|
+
*/
|
|
71
|
+
private setCenter;
|
|
72
|
+
/**
|
|
73
|
+
* Fit the map to the bounds
|
|
74
|
+
* @param latLngBounds the boundary to set
|
|
75
|
+
*/
|
|
76
|
+
private setFitBounds;
|
|
77
|
+
/**
|
|
78
|
+
* Set the map's max bounds
|
|
79
|
+
* @param latLngBounds the boundary to set
|
|
80
|
+
*/
|
|
81
|
+
private setMaxBounds;
|
|
82
|
+
/**
|
|
83
|
+
* Set the map's min zoom
|
|
84
|
+
* @param number the new min zoom
|
|
85
|
+
*/
|
|
86
|
+
private setMinZoom;
|
|
87
|
+
/**
|
|
88
|
+
* Set the map's min zoom
|
|
89
|
+
* @param number the new min zoom
|
|
90
|
+
*/
|
|
91
|
+
private setMaxZoom;
|
|
92
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LeafletDirective, never>;
|
|
93
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<LeafletDirective, "[leaflet]", never, { "fitBoundsOptions": { "alias": "leafletFitBoundsOptions"; "required": false; }; "panOptions": { "alias": "leafletPanOptions"; "required": false; }; "zoomOptions": { "alias": "leafletZoomOptions"; "required": false; }; "zoomPanOptions": { "alias": "leafletZoomPanOptions"; "required": false; }; "options": { "alias": "leafletOptions"; "required": false; }; "zoom": { "alias": "leafletZoom"; "required": false; }; "center": { "alias": "leafletCenter"; "required": false; }; "fitBounds": { "alias": "leafletFitBounds"; "required": false; }; "maxBounds": { "alias": "leafletMaxBounds"; "required": false; }; "minZoom": { "alias": "leafletMinZoom"; "required": false; }; "maxZoom": { "alias": "leafletMaxZoom"; "required": false; }; }, { "mapReady": "leafletMapReady"; "zoomChange": "leafletZoomChange"; "centerChange": "leafletCenterChange"; "onClick": "leafletClick"; "onDoubleClick": "leafletDoubleClick"; "onMouseDown": "leafletMouseDown"; "onMouseUp": "leafletMouseUp"; "onMouseMove": "leafletMouseMove"; "onMouseOver": "leafletMouseOver"; "onMouseOut": "leafletMouseOut"; "onMapMove": "leafletMapMove"; "onMapMoveStart": "leafletMapMoveStart"; "onMapMoveEnd": "leafletMapMoveEnd"; "onMapZoom": "leafletMapZoom"; "onMapZoomStart": "leafletMapZoomStart"; "onMapZoomEnd": "leafletMapZoomEnd"; }, never, never, false, never>;
|
|
94
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LeafletDirective } from './leaflet.directive';
|
|
2
|
+
import { Map } from 'leaflet';
|
|
3
|
+
export declare class LeafletDirectiveWrapper {
|
|
4
|
+
protected leafletDirective: LeafletDirective;
|
|
5
|
+
constructor(leafletDirective: LeafletDirective);
|
|
6
|
+
init(): void;
|
|
7
|
+
getMap(): Map;
|
|
8
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { DoCheck, EventEmitter, KeyValueDiffer, KeyValueDiffers, NgZone, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { Control, Layer } from 'leaflet';
|
|
3
|
+
import { LeafletDirective } from '../../core/leaflet.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Baselayers directive
|
|
7
|
+
*
|
|
8
|
+
* This directive is provided as a convenient way to add baselayers to the map. The input accepts
|
|
9
|
+
* a key-value map of layer name -> layer. Mutable changed are detected. On changes, a differ is
|
|
10
|
+
* used to determine what changed so that layers are appropriately added or removed. This directive
|
|
11
|
+
* will also add the layers control so users can switch between available base layers.
|
|
12
|
+
*
|
|
13
|
+
* To specify which layer to show as the 'active' baselayer, you will want to add it to the map
|
|
14
|
+
* using the layers directive. Otherwise, the plugin will use the last one it sees.
|
|
15
|
+
*/
|
|
16
|
+
export declare class LeafletBaseLayersDirective implements DoCheck, OnDestroy, OnInit {
|
|
17
|
+
private differs;
|
|
18
|
+
private zone;
|
|
19
|
+
baseLayersValue: {
|
|
20
|
+
[name: string]: Layer;
|
|
21
|
+
};
|
|
22
|
+
baseLayersDiffer: KeyValueDiffer<string, Layer>;
|
|
23
|
+
set baseLayers(v: {
|
|
24
|
+
[name: string]: Layer;
|
|
25
|
+
});
|
|
26
|
+
get baseLayers(): {
|
|
27
|
+
[name: string]: Layer;
|
|
28
|
+
};
|
|
29
|
+
layersControlOptions: Control.LayersOptions;
|
|
30
|
+
layersControlReady: EventEmitter<Control.Layers>;
|
|
31
|
+
private baseLayer;
|
|
32
|
+
private leafletDirective;
|
|
33
|
+
private controlLayers;
|
|
34
|
+
constructor(leafletDirective: LeafletDirective, differs: KeyValueDiffers, zone: NgZone);
|
|
35
|
+
ngOnDestroy(): void;
|
|
36
|
+
ngOnInit(): void;
|
|
37
|
+
ngDoCheck(): void;
|
|
38
|
+
protected updateBaseLayers(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Check the current base layer and change it to the new one if necessary
|
|
41
|
+
*/
|
|
42
|
+
protected syncBaseLayer(): void;
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LeafletBaseLayersDirective, never>;
|
|
44
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<LeafletBaseLayersDirective, "[leafletBaseLayers]", never, { "baseLayers": { "alias": "leafletBaseLayers"; "required": false; }; "layersControlOptions": { "alias": "leafletLayersControlOptions"; "required": false; }; }, { "layersControlReady": "leafletLayersControlReady"; }, never, never, false, never>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { DoCheck, EventEmitter, KeyValueDiffer, KeyValueDiffers, NgZone, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { Control, Layer } from 'leaflet';
|
|
3
|
+
import { LeafletDirective } from '../../core/leaflet.directive';
|
|
4
|
+
import { LeafletControlLayersConfig } from './leaflet-control-layers-config.model';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Layers Control
|
|
8
|
+
*
|
|
9
|
+
* This directive is used to configure the layers control. The input accepts an object with two
|
|
10
|
+
* key-value maps of layer name -> layer. Mutable changes are detected. On changes, a differ is
|
|
11
|
+
* used to determine what changed so that layers are appropriately added or removed.
|
|
12
|
+
*
|
|
13
|
+
* To specify which layer to show as the 'active' baselayer, you will want to add it to the map
|
|
14
|
+
* using the layers directive. Otherwise, the last one it sees will be used.
|
|
15
|
+
*/
|
|
16
|
+
export declare class LeafletLayersControlDirective implements DoCheck, OnDestroy, OnInit {
|
|
17
|
+
private differs;
|
|
18
|
+
private zone;
|
|
19
|
+
layersControlConfigValue: LeafletControlLayersConfig;
|
|
20
|
+
baseLayersDiffer: KeyValueDiffer<string, Layer>;
|
|
21
|
+
overlaysDiffer: KeyValueDiffer<string, Layer>;
|
|
22
|
+
set layersControlConfig(v: LeafletControlLayersConfig);
|
|
23
|
+
get layersControlConfig(): LeafletControlLayersConfig;
|
|
24
|
+
layersControlOptions: any;
|
|
25
|
+
layersControlReady: EventEmitter<Control.Layers>;
|
|
26
|
+
private controlLayers;
|
|
27
|
+
private leafletDirective;
|
|
28
|
+
constructor(leafletDirective: LeafletDirective, differs: KeyValueDiffers, zone: NgZone);
|
|
29
|
+
ngOnInit(): void;
|
|
30
|
+
ngOnDestroy(): void;
|
|
31
|
+
ngDoCheck(): void;
|
|
32
|
+
protected updateLayers(): void;
|
|
33
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LeafletLayersControlDirective, never>;
|
|
34
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<LeafletLayersControlDirective, "[leafletLayersControl]", never, { "layersControlConfig": { "alias": "leafletLayersControl"; "required": false; }; "layersControlOptions": { "alias": "leafletLayersControlOptions"; "required": false; }; }, { "layersControlReady": "leafletLayersControlReady"; }, never, never, false, never>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EventEmitter, KeyValueChanges, NgZone } from '@angular/core';
|
|
2
|
+
import { Control, Layer } from 'leaflet';
|
|
3
|
+
import { LeafletControlLayersChanges } from './leaflet-control-layers-changes.model';
|
|
4
|
+
export declare class LeafletControlLayersWrapper {
|
|
5
|
+
private zone;
|
|
6
|
+
protected layersControl: Control.Layers;
|
|
7
|
+
protected layersControlReady: EventEmitter<Control.Layers>;
|
|
8
|
+
constructor(zone: NgZone, layersControlReady: EventEmitter<Control.Layers>);
|
|
9
|
+
getLayersControl(): Control.Layers;
|
|
10
|
+
init(controlConfig: any, controlOptions: any): Control.Layers;
|
|
11
|
+
applyBaseLayerChanges(changes: KeyValueChanges<string, Layer>): LeafletControlLayersChanges;
|
|
12
|
+
applyOverlayChanges(changes: KeyValueChanges<string, Layer>): LeafletControlLayersChanges;
|
|
13
|
+
private applyChanges;
|
|
14
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, SimpleChange } from '@angular/core';
|
|
2
|
+
import { Layer, LeafletEvent } from 'leaflet';
|
|
3
|
+
import { LeafletDirective } from '../core/leaflet.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Layer directive
|
|
7
|
+
*
|
|
8
|
+
* This directive is used to directly control a single map layer. The purpose of this directive is to
|
|
9
|
+
* be used as part of a child structural directive of the map element.
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
export declare class LeafletLayerDirective implements OnChanges, OnDestroy, OnInit {
|
|
13
|
+
private zone;
|
|
14
|
+
layer: Layer;
|
|
15
|
+
onAdd: EventEmitter<LeafletEvent>;
|
|
16
|
+
onRemove: EventEmitter<LeafletEvent>;
|
|
17
|
+
private onAddLayerHandler;
|
|
18
|
+
private onRemoveLayerHandler;
|
|
19
|
+
private leafletDirective;
|
|
20
|
+
constructor(leafletDirective: LeafletDirective, zone: NgZone);
|
|
21
|
+
ngOnInit(): void;
|
|
22
|
+
ngOnDestroy(): void;
|
|
23
|
+
ngOnChanges(changes: {
|
|
24
|
+
[key: string]: SimpleChange;
|
|
25
|
+
}): void;
|
|
26
|
+
private addLayerEventListeners;
|
|
27
|
+
private removeLayerEventListeners;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LeafletLayerDirective, never>;
|
|
29
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<LeafletLayerDirective, "[leafletLayer]", never, { "layer": { "alias": "leafletLayer"; "required": false; }; }, { "onAdd": "leafletLayerAdd"; "onRemove": "leafletLayerRemove"; }, never, never, false, never>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { DoCheck, IterableDiffer, IterableDiffers, NgZone, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { Layer } from 'leaflet';
|
|
3
|
+
import { LeafletDirective } from '../core/leaflet.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Layers directive
|
|
7
|
+
*
|
|
8
|
+
* This directive is used to directly control map layers. As changes are made to the input array of
|
|
9
|
+
* layers, the map is synched to the array. As layers are added or removed from the input array, they
|
|
10
|
+
* are also added or removed from the map. The input array is treated as immutable. To detect changes,
|
|
11
|
+
* you must change the array instance.
|
|
12
|
+
*
|
|
13
|
+
* Important Note: The input layers array is assumed to be immutable. This means you need to use an
|
|
14
|
+
* immutable array implementation or create a new copy of your array when you make changes, otherwise
|
|
15
|
+
* this directive won't detect the change. This is by design. It's for performance reasons. Change
|
|
16
|
+
* detection of mutable arrays requires diffing the state of the array on every DoCheck cycle, which
|
|
17
|
+
* is extremely expensive from a time complexity perspective.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
export declare class LeafletLayersDirective implements DoCheck, OnDestroy, OnInit {
|
|
21
|
+
private differs;
|
|
22
|
+
private zone;
|
|
23
|
+
layersValue: Layer[];
|
|
24
|
+
layersDiffer: IterableDiffer<Layer>;
|
|
25
|
+
set layers(v: Layer[]);
|
|
26
|
+
get layers(): Layer[];
|
|
27
|
+
private leafletDirective;
|
|
28
|
+
constructor(leafletDirective: LeafletDirective, differs: IterableDiffers, zone: NgZone);
|
|
29
|
+
ngDoCheck(): void;
|
|
30
|
+
ngOnInit(): void;
|
|
31
|
+
ngOnDestroy(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Update the state of the layers.
|
|
34
|
+
* We use an iterable differ to synchronize the map layers with the state of the bound layers array.
|
|
35
|
+
* This is important because it allows us to react to changes to the contents of the array as well
|
|
36
|
+
* as changes to the actual array instance.
|
|
37
|
+
*/
|
|
38
|
+
private updateLayers;
|
|
39
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LeafletLayersDirective, never>;
|
|
40
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<LeafletLayersDirective, "[leafletLayers]", never, { "layers": { "alias": "leafletLayers"; "required": false; }; }, {}, never, never, false, never>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { TileLayer } from 'leaflet';
|
|
2
|
+
export declare class LeafletTileLayerDefinition {
|
|
3
|
+
type: string;
|
|
4
|
+
url: string;
|
|
5
|
+
options: any;
|
|
6
|
+
constructor(type: string, url: string, options: any);
|
|
7
|
+
/**
|
|
8
|
+
* Creates a TileLayer from the provided definition. This is a convenience function
|
|
9
|
+
* to help with generating layers from objects.
|
|
10
|
+
*
|
|
11
|
+
* @param layerDef The layer to create
|
|
12
|
+
* @returns {TileLayer} The TileLayer that has been created
|
|
13
|
+
*/
|
|
14
|
+
static createTileLayer(layerDef: LeafletTileLayerDefinition): TileLayer;
|
|
15
|
+
/**
|
|
16
|
+
* Creates a TileLayer for each key in the incoming map. This is a convenience function
|
|
17
|
+
* for generating an associative array of layers from an associative array of objects
|
|
18
|
+
*
|
|
19
|
+
* @param layerDefs A map of key to tile layer definition
|
|
20
|
+
* @returns {{[p: string]: TileLayer}} A new map of key to TileLayer
|
|
21
|
+
*/
|
|
22
|
+
static createTileLayers(layerDefs: {
|
|
23
|
+
[key: string]: LeafletTileLayerDefinition;
|
|
24
|
+
}): {
|
|
25
|
+
[key: string]: TileLayer;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Create a Tile Layer from the current state of this object
|
|
29
|
+
*
|
|
30
|
+
* @returns {TileLayer} A new TileLayer
|
|
31
|
+
*/
|
|
32
|
+
createTileLayer(): TileLayer;
|
|
33
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./core/leaflet.directive";
|
|
3
|
+
import * as i2 from "./layers/leaflet-layer.directive";
|
|
4
|
+
import * as i3 from "./layers/leaflet-layers.directive";
|
|
5
|
+
import * as i4 from "./layers/control/leaflet-control-layers.directive";
|
|
6
|
+
import * as i5 from "./layers/base/leaflet-baselayers.directive";
|
|
7
|
+
export declare class LeafletModule {
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LeafletModule, never>;
|
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<LeafletModule, [typeof i1.LeafletDirective, typeof i2.LeafletLayerDirective, typeof i3.LeafletLayersDirective, typeof i4.LeafletLayersControlDirective, typeof i5.LeafletBaseLayersDirective], never, [typeof i1.LeafletDirective, typeof i2.LeafletLayerDirective, typeof i3.LeafletLayersDirective, typeof i4.LeafletLayersControlDirective, typeof i5.LeafletBaseLayersDirective]>;
|
|
10
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<LeafletModule>;
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bluehalo/ngx-leaflet",
|
|
3
|
+
"description": "Angular.io components for Leaflet",
|
|
4
|
+
"version": "18.0.2",
|
|
5
|
+
"author": "BlueHalo, LLC",
|
|
6
|
+
"copyright": "Copyright BlueHalo 2007-2024 - All Rights Reserved.",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/bluehalo/ngx-leaflet.git"
|
|
11
|
+
},
|
|
12
|
+
"peerDependencies": {
|
|
13
|
+
"@angular/common": "18",
|
|
14
|
+
"@angular/core": "18",
|
|
15
|
+
"leaflet": "1"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"tslib": "^2.3.0"
|
|
19
|
+
},
|
|
20
|
+
"module": "fesm2022/bluehalo-ngx-leaflet.mjs",
|
|
21
|
+
"typings": "index.d.ts",
|
|
22
|
+
"exports": {
|
|
23
|
+
"./package.json": {
|
|
24
|
+
"default": "./package.json"
|
|
25
|
+
},
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./index.d.ts",
|
|
28
|
+
"esm2022": "./esm2022/bluehalo-ngx-leaflet.mjs",
|
|
29
|
+
"esm": "./esm2022/bluehalo-ngx-leaflet.mjs",
|
|
30
|
+
"default": "./fesm2022/bluehalo-ngx-leaflet.mjs"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"sideEffects": false
|
|
34
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { LeafletModule } from './lib/leaflet.module';
|
|
2
|
+
export { LeafletDirective } from './lib/core/leaflet.directive';
|
|
3
|
+
export { LeafletDirectiveWrapper } from './lib/core/leaflet.directive.wrapper';
|
|
4
|
+
export { LeafletUtil } from './lib/core/leaflet.util';
|
|
5
|
+
export { LeafletLayerDirective } from './lib/layers/leaflet-layer.directive';
|
|
6
|
+
export { LeafletLayersDirective } from './lib/layers/leaflet-layers.directive';
|
|
7
|
+
export { LeafletTileLayerDefinition } from './lib/layers/leaflet-tile-layer-definition.model';
|
|
8
|
+
export { LeafletBaseLayersDirective } from './lib/layers/base/leaflet-baselayers.directive';
|
|
9
|
+
export { LeafletLayersControlDirective } from './lib/layers/control/leaflet-control-layers.directive';
|
|
10
|
+
export { LeafletControlLayersWrapper } from './lib/layers/control/leaflet-control-layers.wrapper';
|
|
11
|
+
export { LeafletControlLayersConfig } from './lib/layers/control/leaflet-control-layers-config.model';
|
|
12
|
+
export { LeafletControlLayersChanges } from './lib/layers/control/leaflet-control-layers-changes.model';
|