sic-mapping-toolkit
Version:
SICMapping Toolkit es una biblioteca para Angular que permite la creación de aplicaciones de Web Mapping por medio de OpenLayers
111 lines • 13.3 kB
JavaScript
import { Injectable } from '@angular/core';
import { SICMap } from '../models/map';
import { Map as olMap, View } from 'ol';
import * as i0 from "@angular/core";
export class MapService {
constructor() {
this.mapas = new Map();
}
createMap(target, center = [0, 0], projection = 'EPSG:4326', id) {
const view = new View({
center: center,
zoom: 15,
projection: projection
});
const map = new olMap({
target: target,
view: view,
layers: []
});
const mapa = SICMap.initMap(map, { id });
this.mapas.set(mapa.Id, mapa);
if (!this.default) {
this.default = mapa.Id;
}
return mapa;
}
setDefaultMapa(id) {
this.default = this.mapas.has(id) ? id : this.default;
}
getMapById(id) {
return this.getMapa(id);
}
setBaseLayer(glayer, mapaId) {
const mapa = this.getMapa(mapaId);
return mapa.setBaseLayer(glayer);
}
clearBaseLayer(mapaId) {
const mapa = this.getMapa(mapaId);
mapa.clearBaseLayer();
}
addLayer(glayer, mapaId) {
const mapa = this.getMapa(mapaId);
return mapa.addLayer(glayer);
}
removeLayer(idLayer, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.removeLayer(idLayer);
}
addEventHandler(type, handler, priority, mapaId) {
const mapa = this.getMapa(mapaId);
return mapa.addEventHandler(type, handler, priority);
}
removeEventHandler(handlerId, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.removeEventHandler(handlerId);
}
addOverlay(overlay, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.addOverlay(overlay);
}
removeOverlay(overlay, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.removeOverlay(overlay);
}
addInteraction(interaction, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.addInteraction(interaction);
}
removeInteraction(interaction, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.removeInteraction(interaction);
}
addControl(control, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.addControl(control);
}
removeControl(control, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.removeControl(control);
}
drawFeature(feature, style, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.drawFeatures([feature], style);
}
clearDrawings(featureIdPrefix, mapaId) {
const mapa = this.getMapa(mapaId);
mapa.clearFeatures(featureIdPrefix);
}
// Utilidades
getMapa(mapaId) {
if (!mapaId) {
mapaId = this.default;
}
if (!this.mapas.has(mapaId)) {
throw new Error('No existe SICMap con el id proporcionado');
}
const mapa = this.mapas.get(mapaId);
if (!mapa) {
throw new Error('No se pudo recuperar el SICMap');
}
return mapa;
}
}
MapService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapService_Factory() { return new MapService(); }, token: MapService, providedIn: "root" });
MapService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
MapService.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWMtbWFwcGluZy10b29sa2l0L3NyYy9saWIvc2VydmljZXMvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxHQUFHLElBQUksS0FBSyxFQUFTLElBQUksRUFBeUMsTUFBTSxJQUFJLENBQUM7O0FBU3RGLE1BQU0sT0FBTyxVQUFVO0lBSXJCO1FBQ0UsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUN6QyxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWMsRUFBRSxTQUEyQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFxQixXQUFXLEVBQUUsRUFBVztRQUN4RyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQztZQUNwQixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxFQUFFO1lBQ1IsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUM7WUFDcEIsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9B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LFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTSUNNYXAgfSBmcm9tICcuLi9tb2RlbHMvbWFwJztcblxuaW1wb3J0IHsgTWFwIGFzIG9sTWFwLCBsYXllciwgVmlldywgRmVhdHVyZSwgRXh0ZW50LCBPdmVybGF5LCBJbnRlcmFjdGlvbiB9IGZyb20gJ29sJztcbmltcG9ydCBDb250cm9sIGZyb20gJ29sL2NvbnRyb2wvQ29udHJvbCc7XG5pbXBvcnQgU3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xuaW1wb3J0IHsgU0lDTGF5ZXIgfSBmcm9tICcuLi9tb2RlbHMvbGF5ZXInO1xuaW1wb3J0IHsgTWFwRXZlbnRUeXBlLCBNYXBFdmVudEhhbmRsZXJQcmlvcml0eSB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFNlcnZpY2Uge1xuICBkZWZhdWx0OiBzdHJpbmc7XG4gIG1hcGFzOiBNYXA8c3RyaW5nLCBTSUNNYXA+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubWFwYXMgPSBuZXcgTWFwPHN0cmluZywgU0lDTWFwPigpO1xuICB9XG5cbiAgY3JlYXRlTWFwKHRhcmdldDogc3RyaW5nLCBjZW50ZXI6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMF0sIHByb2plY3Rpb246IHN0cmluZyA9ICdFUFNHOjQzMjYnLCBpZD86IHN0cmluZyk6IFNJQ01hcCB7XG4gICAgY29uc3QgdmlldyA9IG5ldyBWaWV3KHtcbiAgICAgIGNlbnRlcjogY2VudGVyLFxuICAgICAgem9vbTogMTUsXG4gICAgICBwcm9qZWN0aW9uOiBwcm9qZWN0aW9uXG4gICAgfSk7XG4gICAgY29uc3QgbWFwID0gbmV3IG9sTWFwKHtcbiAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgdmlldzogdmlldyxcbiAgICAgIGxheWVyczogW11cbiAgICB9KTtcblxuICAgIGNvbnN0IG1hcGEgPSBTSUNNYXAuaW5pdE1hcChtYXAsIHsgaWQgfSk7XG4gICAgdGhpcy5tYXBhcy5zZXQobWFwYS5JZCwgbWFwYSk7XG5cbiAgICBpZiAoIXRoaXMuZGVmYXVsdCkge1xuICAgICAgdGhpcy5kZWZhdWx0ID0gbWFwYS5JZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwYTtcbiAgfVxuXG4gIHNldERlZmF1bHRNYXBhKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlZmF1bHQgPSB0aGlzLm1hcGFzLmhhcyhpZCkgPyBpZCA6IHRoaXMuZGVmYXVsdDtcbiAgfVxuXG4gIGdldE1hcEJ5SWQoaWQ6IHN0cmluZyk6IFNJQ01hcCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TWFwYShpZCk7XG4gIH1cblxuICBzZXRCYXNlTGF5ZXIoZ2xheWVyOiBTSUNMYXllciwgbWFwYUlkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgcmV0dXJuIG1hcGEuc2V0QmFzZUxheWVyKGdsYXllcik7XG4gIH1cblxuICBjbGVhckJhc2VMYXllcihtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5jbGVhckJhc2VMYXllcigpO1xuICB9XG5cbiAgYWRkTGF5ZXIoZ2xheWVyOiBTSUNMYXllciwgbWFwYUlkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgcmV0dXJuIG1hcGEuYWRkTGF5ZXIoZ2xheWVyKTtcbiAgfVxuXG4gIHJlbW92ZUxheWVyKGlkTGF5ZXI6IHN0cmluZywgbWFwYUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFwYSA9IHRoaXMuZ2V0TWFwYShtYXBhSWQpO1xuICAgIG1hcGEucmVtb3ZlTGF5ZXIoaWRMYXllcik7XG4gIH1cblxuICBhZGRFdmVudEhhbmRsZXIodHlwZTogTWFwRXZlbnRUeXBlLCBoYW5kbGVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQsIHByaW9yaXR5OiBNYXBFdmVudEhhbmRsZXJQcmlvcml0eSwgbWFwYUlkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgcmV0dXJuIG1hcGEuYWRkRXZlbnRIYW5kbGVyKHR5cGUsIGhhbmRsZXIsIHByaW9yaXR5KTtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50SGFuZGxlcihoYW5kbGVySWQ6IHN0cmluZywgbWFwYUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFwYSA9IHRoaXMuZ2V0TWFwYShtYXBhSWQpO1xuICAgIG1hcGEucmVtb3ZlRXZlbnRIYW5kbGVyKGhhbmRsZXJJZCk7XG4gIH1cblxuICBhZGRPdmVybGF5KG92ZXJsYXk6IE92ZXJsYXksIG1hcGFJZD86IHN0cmluZykge1xuICAgIGNvbnN0IG1hcGEgPSB0aGlzLmdldE1hcGEobWFwYUlkKTtcbiAgICBtYXBhLmFkZE92ZXJsYXkob3ZlcmxheSk7XG4gIH1cblxuICByZW1vdmVPdmVybGF5KG92ZXJsYXk6IE92ZXJsYXksIG1hcGFJZD86IHN0cmluZykge1xuICAgIGNvbnN0IG1hcGEgPSB0aGlzLmdldE1hcGEobWFwYUlkKTtcbiAgICBtYXBhLnJlbW92ZU92ZXJsYXkob3ZlcmxheSk7XG4gIH1cblxuICBhZGRJbnRlcmFjdGlvbihpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24sIG1hcGFJZD86IHN0cmluZykge1xuICAgIGNvbnN0IG1hcGEgPSB0aGlzLmdldE1hcGEobWFwYUlkKTtcbiAgICBtYXBhLmFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uKTtcbiAgfVxuXG4gIHJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiwgbWFwYUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFwYSA9IHRoaXMuZ2V0TWFwYShtYXBhSWQpO1xuICAgIG1hcGEucmVtb3ZlSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pO1xuICB9XG5cbiAgYWRkQ29udHJvbChjb250cm9sOiBDb250cm9sLCBtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5hZGRDb250cm9sKGNvbnRyb2wpO1xuICB9XG5cbiAgcmVtb3ZlQ29udHJvbChjb250cm9sOiBDb250cm9sLCBtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5yZW1vdmVDb250cm9sKGNvbnRyb2wpO1xuICB9XG5cbiAgZHJhd0ZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSwgc3R5bGU6IFN0eWxlLCBtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5kcmF3RmVhdHVyZXMoW2ZlYXR1cmVdLCBzdHlsZSk7XG4gIH1cblxuICBjbGVhckRyYXdpbmdzKGZlYXR1cmVJZFByZWZpeDogc3RyaW5nLCBtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5jbGVhckZlYXR1cmVzKGZlYXR1cmVJZFByZWZpeCk7XG4gIH1cblxuICAvLyBVdGlsaWRhZGVzXG4gIHByaXZhdGUgZ2V0TWFwYShtYXBhSWQ6IHN0cmluZyk6IFNJQ01hcCB7XG4gICAgaWYgKCFtYXBhSWQpIHtcbiAgICAgIG1hcGFJZCA9IHRoaXMuZGVmYXVsdDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubWFwYXMuaGFzKG1hcGFJZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZXhpc3RlIFNJQ01hcCBjb24gZWwgaWQgcHJvcG9yY2lvbmFkbycpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcGE6IFNJQ01hcCA9IHRoaXMubWFwYXMuZ2V0KG1hcGFJZCk7XG4gICAgaWYgKCFtYXBhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHNlIHB1ZG8gcmVjdXBlcmFyIGVsIFNJQ01hcCcpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXBhO1xuICB9XG59XG4iXX0=