Socket
Socket
Sign inDemoInstall

@nextgis/ol-map-adapter

Package Overview
Dependencies
Maintainers
2
Versions
228
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nextgis/ol-map-adapter - npm Package Compare versions

Comparing version 0.4.12 to 0.5.0

lib/layer-adapters/MarkerAdapter.d.ts

77

lib/ol-map-adapter.d.ts

@@ -1,2 +0,75 @@

import { OlMapAdapter } from './OlMapAdapter';
export { OlMapAdapter };
/// <reference types="node" />
import { MapAdapter } from '@nextgis/webmap';
import { Map } from 'ol';
import { ImageAdapter } from './layer-adapters/ImageAdapter';
import { EventEmitter } from 'events';
import { OsmAdapter } from './layer-adapters/OsmAdapter';
import { MarkerAdapter } from './layer-adapters/MarkerAdapter';
import { TileAdapter } from './layer-adapters/TileAdapter';
interface LayerMem {
layer: any;
onMap: boolean;
order?: number;
baseLayer?: boolean;
}
export default class OlMapAdapter implements MapAdapter {
static layerAdapters: {
IMAGE: typeof ImageAdapter;
TILE: typeof TileAdapter;
OSM: typeof OsmAdapter;
MARKER: typeof MarkerAdapter;
};
static controlAdapters: {
ZOOM: any;
ATTRIBUTION: any;
};
options: any;
layerAdapters: {
IMAGE: typeof ImageAdapter;
TILE: typeof TileAdapter;
OSM: typeof OsmAdapter;
MARKER: typeof MarkerAdapter;
};
displayProjection: string;
lonlatProjection: string;
emitter: EventEmitter;
map: Map;
_layers: {
[x: string]: LayerMem;
};
_baseLayers: string[];
private _olView;
private _order;
private _length;
private DPI;
private IPM;
create(options?: {
target: string;
}): void;
getContainer(): HTMLElement;
onMapLoad(cb?: any): Promise<{}>;
setCenter(latLng: [number, number]): void;
setZoom(zoom: number): void;
fit(e: [number, number, number, number]): void;
setRotation(angle: number): void;
getLayerAdapter(name: string): any;
getLayer(layerName: string): boolean;
getLayers(): string[];
isLayerOnTheMap(layerName: string): boolean;
addLayer(adapterDef: any, options?: any, baselayer?: boolean): any;
removeLayer(layerName: string): void;
showLayer(layerName: string): void;
hideLayer(layerName: string): void;
setLayerOpacity(layerName: string, value: number): void;
getScaleForResolution(res: any, mpu: any): number;
getResolutionForScale(scale: any, mpu: any): number;
toggleLayer(layerName: string, status: boolean): void;
addControl(controlDef: any, position?: string, options?: any): any;
onMapClick(evt: any): void;
requestGeomString(pixel: {
top: number;
left: number;
}, pixelRadius?: number): any;
private _addMapListeners;
}
export {};

854

lib/ol-map-adapter.js

@@ -1,852 +0,2 @@

(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('ol/source/ImageWMS'), require('ol/layer/Image'), require('ol/source/OSM'), require('ol/layer/Tile'), require('ol/geom/Point'), require('ol/Feature'), require('ol/proj'), require('ol/layer'), require('ol/source/Vector'), require('ol/source/XYZ'), require('ol'), require('ol/control'), require('ol/extent'), require('ol/format'), require('ol/geom/Polygon')) :
typeof define === 'function' && define.amd ? define(['exports', 'ol/source/ImageWMS', 'ol/layer/Image', 'ol/source/OSM', 'ol/layer/Tile', 'ol/geom/Point', 'ol/Feature', 'ol/proj', 'ol/layer', 'ol/source/Vector', 'ol/source/XYZ', 'ol', 'ol/control', 'ol/extent', 'ol/format', 'ol/geom/Polygon'], factory) :
(factory((global.OlMapAdapter = {}),global.ol.source.ImageWMS,global.ol.layer.Image,global.ol.source.OSM,global.ol.layer.Tile,global.ol.geom.Point,global.ol.Feature,global.ol.proj,global.ol.layer,global.ol.source.Vector,global.XYZ,global.ol,global.control,global.ol.extent,global.ol.format,global.Polygon));
}(this, (function (exports,ImageWMS,ImageLayer,OSM,TileLayer,Point,Feature,proj,layer,VectorSource,XYZ,ol,control,extent,format,Polygon) { 'use strict';
ImageWMS = ImageWMS && ImageWMS.hasOwnProperty('default') ? ImageWMS['default'] : ImageWMS;
ImageLayer = ImageLayer && ImageLayer.hasOwnProperty('default') ? ImageLayer['default'] : ImageLayer;
OSM = OSM && OSM.hasOwnProperty('default') ? OSM['default'] : OSM;
TileLayer = TileLayer && TileLayer.hasOwnProperty('default') ? TileLayer['default'] : TileLayer;
Point = Point && Point.hasOwnProperty('default') ? Point['default'] : Point;
Feature = Feature && Feature.hasOwnProperty('default') ? Feature['default'] : Feature;
VectorSource = VectorSource && VectorSource.hasOwnProperty('default') ? VectorSource['default'] : VectorSource;
XYZ = XYZ && XYZ.hasOwnProperty('default') ? XYZ['default'] : XYZ;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var ID = 1;
var ImageAdapter = (function () {
function ImageAdapter() {
}
ImageAdapter.prototype.addLayer = function (options) {
this.name = options.id || 'image-' + ID++;
var imageOptions = {
url: options.url,
params: {
resource: options.resourceId || options.id,
},
ratio: 1,
};
if (options.updateWmsParams) {
imageOptions.imageLoadFunction = function (image, src) {
var url = src.split('?')[0];
var query = src.split('?')[1];
var _a = queryToObject(query), resource = _a.resource, BBOX = _a.BBOX, WIDTH = _a.WIDTH, HEIGHT = _a.HEIGHT;
var queryString = objectToQuery(options.updateWmsParams({
resource: resource,
bbox: BBOX,
width: WIDTH,
height: HEIGHT
}));
image.getImage().src = url + '?' + queryString;
};
}
var source = new ImageWMS(imageOptions);
var layer$$1 = new ImageLayer({ source: source });
this.layer = layer$$1;
return layer$$1;
};
return ImageAdapter;
}());
function queryToObject(str) {
var dec = decodeURIComponent;
var qp = str.split('&');
var ret = {};
var name;
var val;
for (var i = 0, l = qp.length, item = void 0; i < l; ++i) {
item = qp[i];
if (item.length) {
var s = item.indexOf('=');
if (s < 0) {
name = dec(item);
val = '';
}
else {
name = dec(item.slice(0, s));
val = dec(item.slice(s + 1));
}
if (typeof ret[name] === 'string') {
ret[name] = [ret[name]];
}
if (Array.isArray(ret[name])) {
ret[name].push(val);
}
else {
ret[name] = val;
}
}
}
return ret;
}
function objectToQuery(obj, prefix) {
var str = [];
var p;
for (p in obj) {
if (obj.hasOwnProperty(p)) {
var k = prefix ? prefix + '[' + p + ']' : p;
var v = obj[p];
str.push((v !== null && typeof v === 'object') ?
objectToQuery(v, k) :
encodeURIComponent(k) + '=' + encodeURIComponent(v));
}
}
return str.join('&');
}
var domain;
// This constructor is used to store event handlers. Instantiating this is
// faster than explicitly calling `Object.create(null)` to get a "clean" empty
// object (tested with v8 v4.9).
function EventHandlers() {}
EventHandlers.prototype = Object.create(null);
function EventEmitter() {
EventEmitter.init.call(this);
}
// nodejs oddity
// require('events') === require('events').EventEmitter
EventEmitter.EventEmitter = EventEmitter;
EventEmitter.usingDomains = false;
EventEmitter.prototype.domain = undefined;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._maxListeners = undefined;
// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
EventEmitter.defaultMaxListeners = 10;
EventEmitter.init = function() {
this.domain = null;
if (EventEmitter.usingDomains) {
// if there is an active domain, then attach to it.
if (domain.active && !(this instanceof domain.Domain)) ;
}
if (!this._events || this._events === Object.getPrototypeOf(this)._events) {
this._events = new EventHandlers();
this._eventsCount = 0;
}
this._maxListeners = this._maxListeners || undefined;
};
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
if (typeof n !== 'number' || n < 0 || isNaN(n))
throw new TypeError('"n" argument must be a positive number');
this._maxListeners = n;
return this;
};
function $getMaxListeners(that) {
if (that._maxListeners === undefined)
return EventEmitter.defaultMaxListeners;
return that._maxListeners;
}
EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
return $getMaxListeners(this);
};
// These standalone emit* functions are used to optimize calling of event
// handlers for fast cases because emit() itself often has a variable number of
// arguments and can be deoptimized because of that. These functions always have
// the same number of arguments and thus do not get deoptimized, so the code
// inside them can execute faster.
function emitNone(handler, isFn, self) {
if (isFn)
handler.call(self);
else {
var len = handler.length;
var listeners = arrayClone(handler, len);
for (var i = 0; i < len; ++i)
listeners[i].call(self);
}
}
function emitOne(handler, isFn, self, arg1) {
if (isFn)
handler.call(self, arg1);
else {
var len = handler.length;
var listeners = arrayClone(handler, len);
for (var i = 0; i < len; ++i)
listeners[i].call(self, arg1);
}
}
function emitTwo(handler, isFn, self, arg1, arg2) {
if (isFn)
handler.call(self, arg1, arg2);
else {
var len = handler.length;
var listeners = arrayClone(handler, len);
for (var i = 0; i < len; ++i)
listeners[i].call(self, arg1, arg2);
}
}
function emitThree(handler, isFn, self, arg1, arg2, arg3) {
if (isFn)
handler.call(self, arg1, arg2, arg3);
else {
var len = handler.length;
var listeners = arrayClone(handler, len);
for (var i = 0; i < len; ++i)
listeners[i].call(self, arg1, arg2, arg3);
}
}
function emitMany(handler, isFn, self, args) {
if (isFn)
handler.apply(self, args);
else {
var len = handler.length;
var listeners = arrayClone(handler, len);
for (var i = 0; i < len; ++i)
listeners[i].apply(self, args);
}
}
EventEmitter.prototype.emit = function emit(type) {
var er, handler, len, args, i, events, domain;
var doError = (type === 'error');
events = this._events;
if (events)
doError = (doError && events.error == null);
else if (!doError)
return false;
domain = this.domain;
// If there is no 'error' event listener then throw.
if (doError) {
er = arguments[1];
if (domain) {
if (!er)
er = new Error('Uncaught, unspecified "error" event');
er.domainEmitter = this;
er.domain = domain;
er.domainThrown = false;
domain.emit('error', er);
} else if (er instanceof Error) {
throw er; // Unhandled 'error' event
} else {
// At least give some kind of context to the user
var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
err.context = er;
throw err;
}
return false;
}
handler = events[type];
if (!handler)
return false;
var isFn = typeof handler === 'function';
len = arguments.length;
switch (len) {
// fast cases
case 1:
emitNone(handler, isFn, this);
break;
case 2:
emitOne(handler, isFn, this, arguments[1]);
break;
case 3:
emitTwo(handler, isFn, this, arguments[1], arguments[2]);
break;
case 4:
emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);
break;
// slower
default:
args = new Array(len - 1);
for (i = 1; i < len; i++)
args[i - 1] = arguments[i];
emitMany(handler, isFn, this, args);
}
return true;
};
function _addListener(target, type, listener, prepend) {
var m;
var events;
var existing;
if (typeof listener !== 'function')
throw new TypeError('"listener" argument must be a function');
events = target._events;
if (!events) {
events = target._events = new EventHandlers();
target._eventsCount = 0;
} else {
// To avoid recursion in the case that type === "newListener"! Before
// adding it to the listeners, first emit "newListener".
if (events.newListener) {
target.emit('newListener', type,
listener.listener ? listener.listener : listener);
// Re-assign `events` because a newListener handler could have caused the
// this._events to be assigned to a new object
events = target._events;
}
existing = events[type];
}
if (!existing) {
// Optimize the case of one listener. Don't need the extra array object.
existing = events[type] = listener;
++target._eventsCount;
} else {
if (typeof existing === 'function') {
// Adding the second element, need to change to array.
existing = events[type] = prepend ? [listener, existing] :
[existing, listener];
} else {
// If we've already got an array, just append.
if (prepend) {
existing.unshift(listener);
} else {
existing.push(listener);
}
}
// Check for listener leak
if (!existing.warned) {
m = $getMaxListeners(target);
if (m && m > 0 && existing.length > m) {
existing.warned = true;
var w = new Error('Possible EventEmitter memory leak detected. ' +
existing.length + ' ' + type + ' listeners added. ' +
'Use emitter.setMaxListeners() to increase limit');
w.name = 'MaxListenersExceededWarning';
w.emitter = target;
w.type = type;
w.count = existing.length;
emitWarning(w);
}
}
}
return target;
}
function emitWarning(e) {
typeof console.warn === 'function' ? console.warn(e) : console.log(e);
}
EventEmitter.prototype.addListener = function addListener(type, listener) {
return _addListener(this, type, listener, false);
};
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.prependListener =
function prependListener(type, listener) {
return _addListener(this, type, listener, true);
};
function _onceWrap(target, type, listener) {
var fired = false;
function g() {
target.removeListener(type, g);
if (!fired) {
fired = true;
listener.apply(target, arguments);
}
}
g.listener = listener;
return g;
}
EventEmitter.prototype.once = function once(type, listener) {
if (typeof listener !== 'function')
throw new TypeError('"listener" argument must be a function');
this.on(type, _onceWrap(this, type, listener));
return this;
};
EventEmitter.prototype.prependOnceListener =
function prependOnceListener(type, listener) {
if (typeof listener !== 'function')
throw new TypeError('"listener" argument must be a function');
this.prependListener(type, _onceWrap(this, type, listener));
return this;
};
// emits a 'removeListener' event iff the listener was removed
EventEmitter.prototype.removeListener =
function removeListener(type, listener) {
var list, events, position, i, originalListener;
if (typeof listener !== 'function')
throw new TypeError('"listener" argument must be a function');
events = this._events;
if (!events)
return this;
list = events[type];
if (!list)
return this;
if (list === listener || (list.listener && list.listener === listener)) {
if (--this._eventsCount === 0)
this._events = new EventHandlers();
else {
delete events[type];
if (events.removeListener)
this.emit('removeListener', type, list.listener || listener);
}
} else if (typeof list !== 'function') {
position = -1;
for (i = list.length; i-- > 0;) {
if (list[i] === listener ||
(list[i].listener && list[i].listener === listener)) {
originalListener = list[i].listener;
position = i;
break;
}
}
if (position < 0)
return this;
if (list.length === 1) {
list[0] = undefined;
if (--this._eventsCount === 0) {
this._events = new EventHandlers();
return this;
} else {
delete events[type];
}
} else {
spliceOne(list, position);
}
if (events.removeListener)
this.emit('removeListener', type, originalListener || listener);
}
return this;
};
EventEmitter.prototype.removeAllListeners =
function removeAllListeners(type) {
var listeners, events;
events = this._events;
if (!events)
return this;
// not listening for removeListener, no need to emit
if (!events.removeListener) {
if (arguments.length === 0) {
this._events = new EventHandlers();
this._eventsCount = 0;
} else if (events[type]) {
if (--this._eventsCount === 0)
this._events = new EventHandlers();
else
delete events[type];
}
return this;
}
// emit removeListener for all listeners on all events
if (arguments.length === 0) {
var keys = Object.keys(events);
for (var i = 0, key; i < keys.length; ++i) {
key = keys[i];
if (key === 'removeListener') continue;
this.removeAllListeners(key);
}
this.removeAllListeners('removeListener');
this._events = new EventHandlers();
this._eventsCount = 0;
return this;
}
listeners = events[type];
if (typeof listeners === 'function') {
this.removeListener(type, listeners);
} else if (listeners) {
// LIFO order
do {
this.removeListener(type, listeners[listeners.length - 1]);
} while (listeners[0]);
}
return this;
};
EventEmitter.prototype.listeners = function listeners(type) {
var evlistener;
var ret;
var events = this._events;
if (!events)
ret = [];
else {
evlistener = events[type];
if (!evlistener)
ret = [];
else if (typeof evlistener === 'function')
ret = [evlistener.listener || evlistener];
else
ret = unwrapListeners(evlistener);
}
return ret;
};
EventEmitter.listenerCount = function(emitter, type) {
if (typeof emitter.listenerCount === 'function') {
return emitter.listenerCount(type);
} else {
return listenerCount.call(emitter, type);
}
};
EventEmitter.prototype.listenerCount = listenerCount;
function listenerCount(type) {
var events = this._events;
if (events) {
var evlistener = events[type];
if (typeof evlistener === 'function') {
return 1;
} else if (evlistener) {
return evlistener.length;
}
}
return 0;
}
EventEmitter.prototype.eventNames = function eventNames() {
return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];
};
// About 1.5x faster than the two-arg version of Array#splice().
function spliceOne(list, index) {
for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)
list[i] = list[k];
list.pop();
}
function arrayClone(arr, i) {
var copy = new Array(i);
while (i--)
copy[i] = arr[i];
return copy;
}
function unwrapListeners(arr) {
var ret = new Array(arr.length);
for (var i = 0; i < ret.length; ++i) {
ret[i] = arr[i].listener || arr[i];
}
return ret;
}
var OsmAdapter = (function () {
function OsmAdapter() {
this.name = 'osm';
}
OsmAdapter.prototype.addLayer = function (options) {
var layer$$1 = new TileLayer({
source: new OSM(),
});
return layer$$1;
};
return OsmAdapter;
}());
var ID$1 = 1;
var MarkerAdapter = (function () {
function MarkerAdapter() {
}
MarkerAdapter.prototype.addLayer = function (options) {
this.name = options.id || 'marker-' + ID$1++;
var _a = options.latLng, lat = _a.lat, lng = _a.lng;
var point = new Feature({
geometry: new Point(proj.fromLonLat([lng, lat])),
});
var source = new VectorSource({
features: [point],
});
var layer$$1 = new layer.Vector({
source: source,
});
return layer$$1;
};
return MarkerAdapter;
}());
var ID$2 = 1;
var TileAdapter = (function () {
function TileAdapter() {
}
TileAdapter.prototype.addLayer = function (options) {
this.name = options.id || 'tile-' + ID$2++;
var layer$$1 = new TileLayer({
source: new XYZ({
url: options.url,
}),
});
return layer$$1;
};
return TileAdapter;
}());
var OlMapAdapter = (function () {
function OlMapAdapter() {
this.layerAdapters = OlMapAdapter.layerAdapters;
this.displayProjection = 'EPSG:3857';
this.lonlatProjection = 'EPSG:4326';
this.emitter = new EventEmitter();
this._layers = {};
this._baseLayers = [];
this._order = 0;
this._length = 9999;
this.DPI = 1000 / 39.37 / 0.28;
this.IPM = 39.37;
}
OlMapAdapter.prototype.create = function (options) {
if (options === void 0) { options = { target: 'map' }; }
this.options = Object.assign({}, options);
var view = new ol.View({
center: [-9101767, 2822912],
zoom: 14,
projection: this.displayProjection,
});
var defOpt = {
logo: false,
controls: [],
view: view,
layers: [],
};
var mapInitOptions = __assign({}, defOpt, options);
this.map = new ol.Map(mapInitOptions);
this.emitter.emit('create', { map: this.map });
this._olView = this.map.getView();
this._addMapListeners();
};
OlMapAdapter.prototype.getContainer = function () {
return document.getElementById(this.options.target);
};
OlMapAdapter.prototype.onMapLoad = function (cb) {
return new Promise(function (resolve) {
resolve(cb && cb());
});
};
OlMapAdapter.prototype.setCenter = function (latLng) {
this._olView.setCenter(proj.fromLonLat(latLng));
};
OlMapAdapter.prototype.setZoom = function (zoom) {
this._olView.setZoom(zoom);
};
OlMapAdapter.prototype.fit = function (e) {
var toExtent = proj.transformExtent(e, this.lonlatProjection, this.displayProjection);
this._olView.fit(toExtent);
};
OlMapAdapter.prototype.setRotation = function (angle) {
this._olView.setRotation(angle);
};
OlMapAdapter.prototype.getLayerAdapter = function (name) {
return OlMapAdapter.layerAdapters[name];
};
OlMapAdapter.prototype.getLayer = function (layerName) {
return this._layers[layerName] !== undefined;
};
OlMapAdapter.prototype.getLayers = function () {
return Object.keys(this._layers);
};
OlMapAdapter.prototype.isLayerOnTheMap = function (layerName) {
var layerMem = this._layers[layerName];
return layerMem.onMap;
};
OlMapAdapter.prototype.addLayer = function (adapterDef, options, baselayer) {
var _this = this;
var adapterEngine;
if (typeof adapterDef === 'string') {
adapterEngine = this.getLayerAdapter(adapterDef);
}
if (adapterEngine) {
var adapter_1 = new adapterEngine(this.map, options);
var layer$$1 = adapter_1.addLayer(options);
var addlayerFun = adapter_1.addLayer(options);
var toResolve_1 = function (l) {
var layerId = adapter_1.name;
var layerOpts = { layer: l, onMap: false };
if (baselayer) {
layerOpts.baseLayer = true;
_this._baseLayers.push(layerId);
}
else {
layerOpts.order = options.order || _this._order++;
}
_this._layers[layerId] = layerOpts;
return adapter_1;
};
return addlayerFun.then ? addlayerFun.then(function (l) { return toResolve_1(l); }) : Promise.resolve(toResolve_1(layer$$1));
}
return Promise.reject('No adapter');
};
OlMapAdapter.prototype.removeLayer = function (layerName) {
var layer$$1 = this._layers[layerName];
if (layer$$1) {
this.map.removeLayer(layer$$1.layer);
if (layer$$1.baseLayer) {
var index = this._baseLayers.indexOf(layerName);
if (index) {
this._baseLayers.splice(index, 1);
}
}
delete this._layers[layerName];
}
};
OlMapAdapter.prototype.showLayer = function (layerName) {
this.toggleLayer(layerName, true);
};
OlMapAdapter.prototype.hideLayer = function (layerName) {
this.toggleLayer(layerName, false);
};
OlMapAdapter.prototype.setLayerOpacity = function (layerName, value) {
};
OlMapAdapter.prototype.getScaleForResolution = function (res, mpu) {
return parseFloat(res) * (mpu * this.IPM * this.DPI);
};
OlMapAdapter.prototype.getResolutionForScale = function (scale, mpu) {
return parseFloat(scale) / (mpu * this.IPM * this.DPI);
};
OlMapAdapter.prototype.toggleLayer = function (layerName, status) {
var _this = this;
var action = function (source, l) {
if (status) {
if (source instanceof ol.Map) {
l.layer.setZIndex(_this._length - l.order);
source.addLayer(l.layer);
}
}
else {
source.removeLayer(l.layer);
}
l.onMap = status;
};
var layer$$1 = this._layers[layerName];
if (layer$$1 && layer$$1.onMap !== status) {
if (this.map) {
action(this.map, layer$$1);
}
else {
this.emitter.once('create', function (data) {
action(data.map, layer$$1);
});
}
}
};
OlMapAdapter.prototype.addControl = function (controlDef, position, options) {
var control$$1;
if (typeof controlDef === 'string') {
var engine = OlMapAdapter.controlAdapters[controlDef];
if (engine) {
control$$1 = new engine(options);
}
}
else {
control$$1 = controlDef;
}
if (control$$1) {
this.map.addControl(control$$1);
return control$$1;
}
};
OlMapAdapter.prototype.onMapClick = function (evt) {
var _a = proj.transform(evt.coordinate, this.displayProjection, this.lonlatProjection), lng = _a[0], lat = _a[1];
var latLng = {
lat: lat, lng: lng,
};
this.emitter.emit('click', {
latLng: latLng,
pixel: { left: evt.pixel[0], top: evt.pixel[1] },
source: evt,
});
};
OlMapAdapter.prototype.requestGeomString = function (pixel, pixelRadius) {
if (pixelRadius === void 0) { pixelRadius = 5; }
var top = pixel.top, left = pixel.left;
var olMap = this.map;
var bounds = extent.boundingExtent([
olMap.getCoordinateFromPixel([
left - pixelRadius,
top - pixelRadius,
]),
olMap.getCoordinateFromPixel([
left + pixelRadius,
top + pixelRadius,
]),
]);
return new format.WKT().writeGeometry(Polygon.fromExtent(bounds));
};
OlMapAdapter.prototype._addMapListeners = function () {
var _this = this;
this.map.on('click', function (evt) {
_this.onMapClick(evt);
});
};
OlMapAdapter.layerAdapters = {
IMAGE: ImageAdapter,
TILE: TileAdapter,
OSM: OsmAdapter,
MARKER: MarkerAdapter,
};
OlMapAdapter.controlAdapters = {
ZOOM: control.Zoom,
ATTRIBUTION: control.Attribution,
};
return OlMapAdapter;
}());
exports.OlMapAdapter = OlMapAdapter;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=ol-map-adapter.js.map
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ol/proj"),require("ol/layer/Tile"),require("ol"),require("ol/control"),require("ol/extent"),require("ol/format"),require("ol/geom/Polygon"),require("ol/source/ImageWMS"),require("ol/layer/Image"),require("events"),require("ol/source/OSM"),require("ol/geom/Point"),require("ol/Feature"),require("ol/layer"),require("ol/source/Vector"),require("ol/source/XYZ")):"function"==typeof define&&define.amd?define(["ol/proj","ol/layer/Tile","ol","ol/control","ol/extent","ol/format","ol/geom/Polygon","ol/source/ImageWMS","ol/layer/Image","events","ol/source/OSM","ol/geom/Point","ol/Feature","ol/layer","ol/source/Vector","ol/source/XYZ"],t):"object"==typeof exports?exports.OlMapAdapter=t(require("ol/proj"),require("ol/layer/Tile"),require("ol"),require("ol/control"),require("ol/extent"),require("ol/format"),require("ol/geom/Polygon"),require("ol/source/ImageWMS"),require("ol/layer/Image"),require("events"),require("ol/source/OSM"),require("ol/geom/Point"),require("ol/Feature"),require("ol/layer"),require("ol/source/Vector"),require("ol/source/XYZ")):e.OlMapAdapter=t(e["ol/proj"],e["ol/layer/Tile"],e.ol,e["ol/control"],e["ol/extent"],e["ol/format"],e["ol/geom/Polygon"],e["ol/source/ImageWMS"],e["ol/layer/Image"],e.events,e["ol/source/OSM"],e["ol/geom/Point"],e["ol/Feature"],e["ol/layer"],e["ol/source/Vector"],e["ol/source/XYZ"])}(window,function(e,t,r,o,n,i,a,u,s,l,c,p,f,y,d,m){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=16)}([function(t,r){t.exports=e},function(e,r){e.exports=t},function(e,t){e.exports=r},function(e,t){e.exports=o},function(e,t){e.exports=n},function(e,t){e.exports=i},function(e,t){e.exports=a},function(e,t){e.exports=u},function(e,t){e.exports=s},function(e,t){e.exports=l},function(e,t){e.exports=c},function(e,t){e.exports=p},function(e,t){e.exports=f},function(e,t){e.exports=y},function(e,t){e.exports=d},function(e,t){e.exports=m},function(e,t,r){"use strict";r.r(t);var o=r(2),n=r(0),i=r(3),a=r(4),u=r(5),s=r(6),l=r(7),c=r.n(l),p=r(8),f=r.n(p),y=1,d=function(){function e(){}return e.prototype.addLayer=function(e){this.name=e.id||"image-"+y++;var t={url:e.url,params:{resource:e.resourceId||e.id},ratio:1};e.updateWmsParams&&(t.imageLoadFunction=function(t,r){var o=r.split("?")[0],n=function(e){for(var t,r,o=decodeURIComponent,n=e.split("&"),i={},a=0,u=n.length,s=void 0;a<u;++a)if((s=n[a]).length){var l=s.indexOf("=");l<0?(t=o(s),r=""):(t=o(s.slice(0,l)),r=o(s.slice(l+1))),"string"==typeof i[t]&&(i[t]=[i[t]]),Array.isArray(i[t])?i[t].push(r):i[t]=r}return i}(r.split("?")[1]),i=n.resource,a=n.BBOX,u=n.WIDTH,s=n.HEIGHT,l=function e(t,r){var o=[];var n;for(n in t)if(t.hasOwnProperty(n)){var i=r?r+"["+n+"]":n,a=t[n];o.push(null!==a&&"object"==typeof a?e(a,i):encodeURIComponent(i)+"="+encodeURIComponent(a))}return o.join("&")}(e.updateWmsParams({resource:i,bbox:a,width:u,height:s}));t.getImage().src=o+"?"+l});var r=new c.a(t),o=new f.a({source:r});return this.layer=o,o},e}();var m=r(9),h=r(10),g=r.n(h),v=r(1),x=r.n(v),L=function(){function e(){this.name="osm"}return e.prototype.addLayer=function(e){return new x.a({source:new g.a})},e}(),b=r(11),P=r.n(b),j=r(12),O=r.n(j),q=r(13),w=r(14),M=r.n(w),_=1,I=function(){function e(){}return e.prototype.addLayer=function(e){this.name=e.id||"marker-"+_++;var t=e.latLng,r=t.lat,o=t.lng,i=new O.a({geometry:new P.a(Object(n.fromLonLat)([o,r]))}),a=new M.a({features:[i]});return new q.Vector({source:a})},e}(),S=r(15),A=r.n(S),T=1,C=function(){function e(){}return e.prototype.addLayer=function(e){return this.name=e.id||"tile-"+T++,new x.a({source:new A.a({url:e.url})})},e}(),E=function(){return(E=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)},V=function(){function e(){this.layerAdapters=e.layerAdapters,this.displayProjection="EPSG:3857",this.lonlatProjection="EPSG:4326",this.emitter=new m.EventEmitter,this._layers={},this._baseLayers=[],this._order=0,this._length=9999,this.DPI=1e3/39.37/.28,this.IPM=39.37}return e.prototype.create=function(e){void 0===e&&(e={target:"map"}),this.options=Object.assign({},e);var t=new o.View({center:[-9101767,2822912],zoom:14,projection:this.displayProjection}),r=E({},{logo:!1,controls:[],view:t,layers:[]},e);this.map=new o.Map(r),this.emitter.emit("create",{map:this.map}),this._olView=this.map.getView(),this._addMapListeners()},e.prototype.getContainer=function(){return document.getElementById(this.options.target)},e.prototype.onMapLoad=function(e){return new Promise(function(t){t(e&&e())})},e.prototype.setCenter=function(e){this._olView.setCenter(Object(n.fromLonLat)(e))},e.prototype.setZoom=function(e){this._olView.setZoom(e)},e.prototype.fit=function(e){var t=Object(n.transformExtent)(e,this.lonlatProjection,this.displayProjection);this._olView.fit(t)},e.prototype.setRotation=function(e){this._olView.setRotation(e)},e.prototype.getLayerAdapter=function(t){return e.layerAdapters[t]},e.prototype.getLayer=function(e){return void 0!==this._layers[e]},e.prototype.getLayers=function(){return Object.keys(this._layers)},e.prototype.isLayerOnTheMap=function(e){return this._layers[e].onMap},e.prototype.addLayer=function(e,t,r){var o,n=this;if("string"==typeof e&&(o=this.getLayerAdapter(e)),o){var i=new o(this.map,t),a=i.addLayer(t),u=i.addLayer(t),s=function(e){var o=i.name,a={layer:e,onMap:!1};return r?(a.baseLayer=!0,n._baseLayers.push(o)):a.order=t.order||n._order++,n._layers[o]=a,i};return u.then?u.then(function(e){return s(e)}):Promise.resolve(s(a))}return Promise.reject("No adapter")},e.prototype.removeLayer=function(e){var t=this._layers[e];if(t){if(this.map.removeLayer(t.layer),t.baseLayer){var r=this._baseLayers.indexOf(e);r&&this._baseLayers.splice(r,1)}delete this._layers[e]}},e.prototype.showLayer=function(e){this.toggleLayer(e,!0)},e.prototype.hideLayer=function(e){this.toggleLayer(e,!1)},e.prototype.setLayerOpacity=function(e,t){},e.prototype.getScaleForResolution=function(e,t){return parseFloat(e)*(t*this.IPM*this.DPI)},e.prototype.getResolutionForScale=function(e,t){return parseFloat(e)/(t*this.IPM*this.DPI)},e.prototype.toggleLayer=function(e,t){var r=this,n=function(e,n){t?e instanceof o.Map&&(n.layer.setZIndex(r._length-n.order),e.addLayer(n.layer)):e.removeLayer(n.layer),n.onMap=t},i=this._layers[e];i&&i.onMap!==t&&(this.map?n(this.map,i):this.emitter.once("create",function(e){n(e.map,i)}))},e.prototype.addControl=function(t,r,o){var n;if("string"==typeof t){var i=e.controlAdapters[t];i&&(n=new i(o))}else n=t;if(n)return this.map.addControl(n),n},e.prototype.onMapClick=function(e){var t=Object(n.transform)(e.coordinate,this.displayProjection,this.lonlatProjection),r=t[0],o={lat:t[1],lng:r};this.emitter.emit("click",{latLng:o,pixel:{left:e.pixel[0],top:e.pixel[1]},source:e})},e.prototype.requestGeomString=function(e,t){void 0===t&&(t=5);var r=e.top,o=e.left,n=this.map,i=Object(a.boundingExtent)([n.getCoordinateFromPixel([o-t,r-t]),n.getCoordinateFromPixel([o+t,r+t])]);return(new u.WKT).writeGeometry(Object(s.fromExtent)(i))},e.prototype._addMapListeners=function(){var e=this;this.map.on("click",function(t){e.onMapClick(t)})},e.layerAdapters={IMAGE:d,TILE:C,OSM:L,MARKER:I},e.controlAdapters={ZOOM:i.Zoom,ATTRIBUTION:i.Attribution},e}();t.default=V}]).default});
//# sourceMappingURL=ol-map-adapter.js.map
{
"name": "@nextgis/ol-map-adapter",
"version": "0.4.12",
"version": "0.5.0",
"description": "",
"main": "lib/ol-map-adapter.js",
"types": "lib/ol-map-adapter.d.ts",
"scripts": {
"build": "rollup -c rollup.config.js",
"watch": "rollup -c rollup.config.js -w",
"test": "echo \"Error: run tests from root\" && exit 1"
},
"dependencies": {
"ol": "^5.2.0"
"@nextgis/webmap": "^0.5.0",
"events": "^3.0.0",
"ol": "^5.3.0"
},
"devDependencies": {
"@nextgis/webmap": "^0.4.12",
"rollup": "^0.66.6",
"rollup-plugin-commonjs": "^9.2.0",
"rollup-plugin-node-builtins": "^2.1.2",
"rollup-plugin-node-resolve": "^3.4.0",
"rollup-plugin-sourcemaps": "^0.4.2",
"rollup-plugin-typescript2": "^0.17.2",
"rollup-plugin-uglify": "^6.0.0",
"typescript": "^3.1.4"
"@types/events": "^1.2.0",
"@types/node": "^10.12.8",
"rimraf": "^2.6.2",
"ts-loader": "^5.3.0",
"tslint": "^5.11.0",
"tslint-loader": "^3.6.0",
"tslint-webpack-plugin": "^1.2.2",
"typescript": "^3.1.6",
"webpack": "^4.25.1",
"webpack-cli": "^3.1.2"
},
"scripts": {
"mjs": "tsc -d --outDir ./lib/modules",
"start": "webpack-dev-server --progress --open --hot",
"clean": "rimraf ./lib",
"dev": "npm run clean && webpack --config ./webpack.config.js --progress",
"build": "npm run dev -- --mode=production",
"prod": "npm run build",
"watch": "echo \"No watch for this app\" && exit 0",
"test": "echo \"Error: run tests from root\" && exit 1"
},
"repository": {

@@ -42,3 +50,3 @@ "type": "git",

"license": "GPL-3.0",
"gitHead": "7c70bda1f937eb3a30c604d59f455f9f0b08f463"
"gitHead": "f0d00988317d1ac3c032d298f9065e1f90c10368"
}
# OpenLayers map adapter
Webmap adapter to use OpenLayers GIS framework
Webmap adapter to use [OpenLayers](https://openlayers.org/) GIS framework
This library is not intended for using directly in the browser.
Use OlMapAdapter with NPM installation method for building large scale applications. It pairs nicely with module bundlers such as [Webpack](https://webpack.js.org/)
```bash
# latest stable
$ npm install --save-dev @nextgis/ol-map-adapter
# or
$ yarn add @nextgis/ol-map-adapter
```
```js
import WebMap from '@nextgis/webmap';
import OlMapAdapter from '@nextgis/ol-map-adapter';
// manually added styles
import 'ol/ol.css';
const webMap = new WebMap({
mapAdapter: new OlMapAdapter()
});
webMap.create(options).then(() => {
// on webmap create
})
```
## Commercial support

@@ -6,0 +32,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc