@agm/core
Version:
Angular components for Google Maps
96 lines • 12.5 kB
JavaScript
import { Injectable, NgZone } from '@angular/core';
import { Observable } from 'rxjs';
import { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';
export class RectangleManager {
constructor(_apiWrapper, _zone) {
this._apiWrapper = _apiWrapper;
this._zone = _zone;
this._rectangles = new Map();
}
addRectangle(rectangle) {
this._apiWrapper.getNativeMap().then(() => this._rectangles.set(rectangle, this._apiWrapper.createRectangle({
bounds: {
north: rectangle.north,
east: rectangle.east,
south: rectangle.south,
west: rectangle.west,
},
clickable: rectangle.clickable,
draggable: rectangle.draggable,
editable: rectangle.editable,
fillColor: rectangle.fillColor,
fillOpacity: rectangle.fillOpacity,
strokeColor: rectangle.strokeColor,
strokeOpacity: rectangle.strokeOpacity,
strokePosition: google.maps.StrokePosition[rectangle.strokePosition],
strokeWeight: rectangle.strokeWeight,
visible: rectangle.visible,
zIndex: rectangle.zIndex,
})));
}
/**
* Removes the given rectangle from the map.
*/
removeRectangle(rectangle) {
return this._rectangles.get(rectangle).then((r) => {
r.setMap(null);
this._rectangles.delete(rectangle);
});
}
setOptions(rectangle, options) {
return this._rectangles.get(rectangle).then((r) => {
const actualStrokePosition = options.strokePosition;
options.strokePosition = google.maps.StrokePosition[actualStrokePosition];
r.setOptions(options);
});
}
getBounds(rectangle) {
return this._rectangles.get(rectangle).then((r) => r.getBounds());
}
setBounds(rectangle) {
return this._rectangles.get(rectangle).then((r) => {
return r.setBounds({
north: rectangle.north,
east: rectangle.east,
south: rectangle.south,
west: rectangle.west,
});
});
}
setEditable(rectangle) {
return this._rectangles.get(rectangle).then((r) => {
return r.setEditable(rectangle.editable);
});
}
setDraggable(rectangle) {
return this._rectangles.get(rectangle).then((r) => {
return r.setDraggable(rectangle.draggable);
});
}
setVisible(rectangle) {
return this._rectangles.get(rectangle).then((r) => {
return r.setVisible(rectangle.visible);
});
}
createEventObservable(eventName, rectangle) {
return new Observable((subsrciber) => {
let listener = null;
this._rectangles.get(rectangle).then((r) => {
listener = r.addListener(eventName, (e) => this._zone.run(() => subsrciber.next(e)));
});
return () => {
if (listener !== null) {
listener.remove();
}
};
});
}
}
RectangleManager.decorators = [
{ type: Injectable }
];
RectangleManager.ctorParameters = () => [
{ type: GoogleMapsAPIWrapper },
{ type: NgZone }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvbWFuYWdlcnMvcmVjdGFuZ2xlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUc5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdsRSxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQW9CLFdBQWlDLEVBQVUsS0FBYTtRQUF4RCxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBSHBFLGdCQUFXLEdBQ2YsSUFBSSxHQUFHLEVBQWdELENBQUM7SUFFbUIsQ0FBQztJQUVoRixZQUFZLENBQUMsU0FBdUI7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztZQUMvRCxNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2dCQUN0QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7Z0JBQ3BCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztnQkFDdEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2FBQ3JCO1lBQ0QsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1lBQzlCLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztZQUM5QixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDNUIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1lBQzlC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LENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFJLFNBQWlCLEVBQUUsU0FBdUI7UUFDakUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQXlCLEVBQUUsRUFBRTtZQUNsRCxJQUFJLFFBQVEsR0FBa0MsSUFBSSxDQUFDO1lBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6QyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFGLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO29CQUNyQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ25CO1lBQ0gsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUEvRkYsVUFBVTs7O1lBRkYsb0JBQW9CO1lBTFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpYmVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFnbVJlY3RhbmdsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcmVjdGFuZ2xlJztcbmltcG9ydCB7IEdvb2dsZU1hcHNBUElXcmFwcGVyIH0gZnJvbSAnLi4vZ29vZ2xlLW1hcHMtYXBpLXdyYXBwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVjdGFuZ2xlTWFuYWdlciB7XG4gIHByaXZhdGUgX3JlY3RhbmdsZXM6IE1hcDxBZ21SZWN0YW5nbGUsIFByb21pc2U8Z29vZ2xlLm1hcHMuUmVjdGFuZ2xlPj4gPVxuICAgICAgbmV3IE1hcDxBZ21SZWN0YW5nbGUsIFByb21pc2U8Z29vZ2xlLm1hcHMuUmVjdGFuZ2xlPj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcGlXcmFwcGVyOiBHb29nbGVNYXBzQVBJV3JhcHBlciwgcHJpdmF0ZSBfem9uZTogTmdab25lKSB7fVxuXG4gIGFkZFJlY3RhbmdsZShyZWN0YW5nbGU6IEFnbVJlY3RhbmdsZSkge1xuICAgIHRoaXMuX2FwaVdyYXBwZXIuZ2V0TmF0aXZlTWFwKCkudGhlbigoKSA9PlxuICAgICAgdGhpcy5fcmVjdGFuZ2xlcy5zZXQocmVjdGFuZ2xlLCB0aGlzLl9hcGlXcmFwcGVyLmNyZWF0ZVJlY3RhbmdsZSh7XG4gICAgICAgIGJvdW5kczoge1xuICAgICAgICAgIG5vcnRoOiByZWN0YW5nbGUubm9ydGgsXG4gICAgICAgICAgZWFzdDogcmVjdGFuZ2xlLmVhc3QsXG4gICAgICAgICAgc291dGg6IHJlY3RhbmdsZS5zb3V0aCxcbiAgICAgICAgICB3ZXN0OiByZWN0YW5nbGUud2VzdCxcbiAgICAgICAgfSxcbiAgICAgICAgY2xpY2thYmxlOiByZWN0YW5nbGUuY2xpY2thYmxlLFxuICAgICAgICBkcmFnZ2FibGU6IHJlY3RhbmdsZS5kcmFnZ2FibGUsXG4gICAgICAgIGVkaXRhYmxlOiByZWN0YW5nbGUuZWRpdGFibGUsXG4gICAgICAgIGZpbGxDb2xvcjogcmVjdGFuZ2xlLmZpbGxDb2xvcixcbiAgICAgICAgZmlsbE9wYWNpdHk6IHJlY3RhbmdsZS5maWxsT3BhY2l0eSxcbiAgICAgICAgc3Ryb2tlQ29sb3I6IHJlY3RhbmdsZS5zdHJva2VDb2xvcixcbiAgICAgICAgc3Ryb2tlT3BhY2l0eTogcmVjdGFuZ2xlLnN0cm9rZU9wYWNpdHksXG4gICAgICAgIHN0cm9rZVBvc2l0aW9uOiBnb29nbGUubWFwcy5TdHJva2VQb3NpdGlvbltyZWN0YW5nbGUuc3Ryb2tlUG9zaXRpb25dLFxuICAgICAgICBzdHJva2VXZWlnaHQ6IHJlY3RhbmdsZS5zdHJva2VXZWlnaHQsXG4gICAgICAgIHZpc2libGU6IHJlY3RhbmdsZS52aXNpYmxlLFxuICAgICAgICB6SW5kZXg6IHJlY3RhbmdsZS56SW5kZXgsXG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGdpdmVuIHJlY3RhbmdsZSBmcm9tIHRoZSBtYXAuXG4gICAqL1xuICByZW1vdmVSZWN0YW5nbGUocmVjdGFuZ2xlOiBBZ21SZWN0YW5nbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVjdGFuZ2xlcy5nZXQocmVjdGFuZ2xlKS50aGVuKChyKSA9PiB7XG4gICAgICByLnNldE1hcChudWxsKTtcbiAgICAgIHRoaXMuX3JlY3RhbmdsZXMuZGVsZXRlKHJlY3RhbmdsZSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRPcHRpb25zKHJlY3RhbmdsZTogQWdtUmVjdGFuZ2xlLCBvcHRpb25zOiBnb29nbGUubWFwcy5SZWN0YW5nbGVPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY3RhbmdsZXMuZ2V0KHJlY3RhbmdsZSkudGhlbigocikgPT4ge1xuICAgICAgY29uc3QgYWN0dWFsU3Ryb2tlUG9zaXRpb24gPSBvcHRpb25zLnN0cm9rZVBvc2l0aW9uIGFzIGFueSBhcyBrZXlvZiB0eXBlb2YgZ29vZ2xlLm1hcHMuU3Ryb2tlUG9zaXRpb247XG4gICAgICBvcHRpb25zLnN0cm9rZVBvc2l0aW9uID0gZ29vZ2xlLm1hcHMuU3Ryb2tlUG9zaXRpb25bYWN0dWFsU3Ryb2tlUG9zaXRpb25dO1xuICAgICAgci5zZXRPcHRpb25zKG9wdGlvbnMpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Qm91bmRzKHJlY3RhbmdsZTogQWdtUmVjdGFuZ2xlKTogUHJvbWlzZTxnb29nbGUubWFwcy5MYXRMbmdCb3VuZHM+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVjdGFuZ2xlcy5nZXQocmVjdGFuZ2xlKS50aGVuKChyKSA9PiByLmdldEJvdW5kcygpKTtcbiAgfVxuXG4gIHNldEJvdW5kcyhyZWN0YW5nbGU6IEFnbVJlY3RhbmdsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWN0YW5nbGVzLmdldChyZWN0YW5nbGUpLnRoZW4oKHIpID0+IHtcbiAgICAgIHJldHVybiByLnNldEJvdW5kcyh7XG4gICAgICAgIG5vcnRoOiByZWN0YW5nbGUubm9ydGgsXG4gICAgICAgIGVhc3Q6IHJlY3RhbmdsZS5lYXN0LFxuICAgICAgICBzb3V0aDogcmVjdGFuZ2xlLnNvdXRoLFxuICAgICAgICB3ZXN0OiByZWN0YW5nbGUud2VzdCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0RWRpdGFibGUocmVjdGFuZ2xlOiBBZ21SZWN0YW5nbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVjdGFuZ2xlcy5nZXQocmVjdGFuZ2xlKS50aGVuKChyKSA9PiB7XG4gICAgICByZXR1cm4gci5zZXRFZGl0YWJsZShyZWN0YW5nbGUuZWRpdGFibGUpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0RHJhZ2dhYmxlKHJlY3RhbmdsZTogQWdtUmVjdGFuZ2xlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY3RhbmdsZXMuZ2V0KHJlY3RhbmdsZSkudGhlbigocikgPT4ge1xuICAgICAgcmV0dXJuIHIuc2V0RHJhZ2dhYmxlKHJlY3RhbmdsZS5kcmFnZ2FibGUpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0VmlzaWJsZShyZWN0YW5nbGU6IEFnbVJlY3RhbmdsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWN0YW5nbGVzLmdldChyZWN0YW5nbGUpLnRoZW4oKHIpID0+IHtcbiAgICAgIHJldHVybiByLnNldFZpc2libGUocmVjdGFuZ2xlLnZpc2libGUpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRXZlbnRPYnNlcnZhYmxlPFQ+KGV2ZW50TmFtZTogc3RyaW5nLCByZWN0YW5nbGU6IEFnbVJlY3RhbmdsZSk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic3JjaWJlcjogU3Vic2NyaWJlcjxUPikgPT4ge1xuICAgICAgbGV0IGxpc3RlbmVyOiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lciA9IG51bGw7XG4gICAgICB0aGlzLl9yZWN0YW5nbGVzLmdldChyZWN0YW5nbGUpLnRoZW4oKHIpID0+IHtcbiAgICAgICAgbGlzdGVuZXIgPSByLmFkZExpc3RlbmVyKGV2ZW50TmFtZSwgKGU6IFQpID0+IHRoaXMuX3pvbmUucnVuKCgpID0+IHN1YnNyY2liZXIubmV4dChlKSkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChsaXN0ZW5lciAhPT0gbnVsbCkge1xuICAgICAgICAgIGxpc3RlbmVyLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=