services/map.service.ts
constructor()
|
Defined in services/map.service.ts:15
|
Public setMap |
setMap(map: any)
|
Defined in services/map.service.ts:19
|
Returns:
void
|
Public getMap |
getMap()
|
Defined in services/map.service.ts:22
|
Returns:
void
|
Public setLayerControl |
setLayerControl(state: any)
|
Defined in services/map.service.ts:26
|
Returns:
void
|
Public getLayerControl |
getLayerControl()
|
Defined in services/map.service.ts:29
|
Returns:
void
|
Public addBasemap |
addBasemap(basemap: any, name: any)
|
Defined in services/map.service.ts:33
|
Returns:
void
|
Public getUniqueName |
getUniqueName(name: any)
|
Defined in services/map.service.ts:45
|
Returns:
void
|
Public addOverlay |
addOverlay(overlay: any, name: string, gId: string)
|
Defined in services/map.service.ts:58
|
Returns:
void
|
Public getBasemaps |
getBasemaps()
|
Defined in services/map.service.ts:85
|
Returns:
void
|
Public getOverlays |
getOverlays()
|
Defined in services/map.service.ts:89
|
Returns:
void
|
Public getObservableOverlays |
getObservableOverlays()
|
Defined in services/map.service.ts:93
|
Returns:
void
|
Public getObservableBasemaps |
getObservableBasemaps()
|
Defined in services/map.service.ts:100
|
Returns:
void
|
Public refreshOverlays |
refreshOverlays(remove: any, add: any)
|
Defined in services/map.service.ts:107
|
Returns:
void
|
Public increaseNumber |
increaseNumber()
|
Defined in services/map.service.ts:120
|
Returns:
void
|
Public getLayerNumber |
getLayerNumber()
|
Defined in services/map.service.ts:124
|
Returns:
void
|
Public addControl |
addControl()
|
Defined in services/map.service.ts:128
|
Returns:
void
|
Private basemaps |
basemaps: |
Defined in services/map.service.ts:9
|
Private groupIdentifiers |
groupIdentifiers: |
Defined in services/map.service.ts:14
|
Private groupNames |
groupNames: |
Defined in services/map.service.ts:15
|
Private layerControlflag |
layerControlflag: |
Default value: false
|
Defined in services/map.service.ts:11
|
Private layerControlObject |
layerControlObject: |
Defined in services/map.service.ts:13
|
Private layersInControlNumber |
layersInControlNumber: |
Default value: 0
|
Defined in services/map.service.ts:12
|
Private map |
map: |
Defined in services/map.service.ts:8
|
Private overlays |
overlays: |
Defined in services/map.service.ts:10
|
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Rx';
import * as L from 'leaflet';
@Injectable()
export class MapService {
private map;
private basemaps: any = {};
private overlays: any = {};
private layerControlflag: Boolean = false;
private layersInControlNumber: number = 0;
private layerControlObject: any = {};
private groupIdentifiers: Array<string> = [];
private groupNames: Array<string> = [];
constructor() { }
public setMap(map) {
this.map = map;
}
public getMap() {
return this.map;
}
public setLayerControl(state) {
this.layerControlflag = state;
}
public getLayerControl() {
return this.layerControlflag;
}
public addBasemap(basemap, name) {
if (name === '') {
name = 'unknown layer';
}
if (this.basemaps[name] === undefined) {
this.basemaps[name] = basemap;
} else {
name = this.getUniqueName(name);
this.addBasemap(basemap, name)
}
}
public getUniqueName(name) {
let nameindex: number = 0;
let newName: string = name;
if (name.indexOf('(') !== -1) {
nameindex = parseInt(name.split('(')[1].split(')')[0]);
nameindex += 1;
newName = name.split('(')[0];
} else {
nameindex = 1;
}
return name = newName + '(' + nameindex + ')';
}
public addOverlay(overlay, name: string, gId?: string) {
if (this.groupIdentifiers.indexOf(gId) !== -1) {
let index = this.groupIdentifiers.indexOf(gId);
let existing_name: string = this.groupNames[index];
this.overlays[existing_name] = overlay;
} else {
if (name === '') {
name = 'unknown group';
}
if (this.overlays[name] === undefined) {
this.groupNames.push(name);
this.groupIdentifiers.push(gId);
this.overlays[name] = overlay;
} else {
name = this.getUniqueName(name);
if (this.groupNames.indexOf(name) === -1) {
this.groupNames.push(name);
this.groupIdentifiers.push(gId);
} else {
this.addOverlay(overlay, name);
}
}
}
this.addControl();
}
public getBasemaps() {
return this.basemaps;
}
public getOverlays() {
return this.overlays;
}
public getObservableOverlays() {
return Observable.create(observer => {
observer.next(this.overlays);
observer.complete();
});
}
public getObservableBasemaps() {
return Observable.create(observer => {
observer.next(this.basemaps);
observer.complete();
});
}
public refreshOverlays(remove, add) {
let overlays = this.getOverlays();
for (var key in overlays) {
if (overlays[key] instanceof Array) {
overlays[key].forEach((element, index, arr) => {
if (element._leaflet_id == remove._leaflet_id) {
arr[index] = add;
}
});
}
}
}
public increaseNumber() {
this.layersInControlNumber += 1;
}
public getLayerNumber() {
return this.layersInControlNumber;
}
public addControl() {
if (this.layerControlflag) {
let map = this.getMap();
if (Object.keys(this.layerControlObject).length !== 0) {
this.layerControlObject.getContainer().innerHTML = '';
map.removeControl(this.layerControlObject);
}
this.layerControlObject = L.control.layers(this.getBasemaps(), this.getOverlays()).addTo(map);
}
}
}