UNPKG

@agm/core

Version:

Angular components for Google Maps

100 lines 14.5 kB
import { __awaiter } from "tslib"; import { Injectable, NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper'; export class MarkerManager { constructor(_mapsWrapper, _zone) { this._mapsWrapper = _mapsWrapper; this._zone = _zone; this._markers = new Map(); } convertAnimation(uiAnim) { return __awaiter(this, void 0, void 0, function* () { if (uiAnim === null) { return null; } else { return this._mapsWrapper.getNativeMap().then(() => google.maps.Animation[uiAnim]); } }); } deleteMarker(markerDirective) { const markerPromise = this._markers.get(markerDirective); if (markerPromise == null) { // marker already deleted return Promise.resolve(); } return markerPromise.then((marker) => { return this._zone.run(() => { marker.setMap(null); this._markers.delete(markerDirective); }); }); } updateMarkerPosition(marker) { return this._markers.get(marker).then((m) => m.setPosition({ lat: marker.latitude, lng: marker.longitude })); } updateTitle(marker) { return this._markers.get(marker).then((m) => m.setTitle(marker.title)); } updateLabel(marker) { return this._markers.get(marker).then((m) => { m.setLabel(marker.label); }); } updateDraggable(marker) { return this._markers.get(marker).then((m) => m.setDraggable(marker.draggable)); } updateIcon(marker) { return this._markers.get(marker).then((m) => m.setIcon(marker.iconUrl)); } updateOpacity(marker) { return this._markers.get(marker).then((m) => m.setOpacity(marker.opacity)); } updateVisible(marker) { return this._markers.get(marker).then((m) => m.setVisible(marker.visible)); } updateZIndex(marker) { return this._markers.get(marker).then((m) => m.setZIndex(marker.zIndex)); } updateClickable(marker) { return this._markers.get(marker).then((m) => m.setClickable(marker.clickable)); } updateAnimation(marker) { return __awaiter(this, void 0, void 0, function* () { const m = yield this._markers.get(marker); m.setAnimation(yield this.convertAnimation(marker.animation)); }); } addMarker(marker) { const markerPromise = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { return this._mapsWrapper.createMarker({ position: { lat: marker.latitude, lng: marker.longitude }, label: marker.label, draggable: marker.draggable, icon: marker.iconUrl, opacity: marker.opacity, visible: marker.visible, zIndex: marker.zIndex, title: marker.title, clickable: marker.clickable, animation: yield this.convertAnimation(marker.animation), }).then(resolve); })); this._markers.set(marker, markerPromise); } getNativeMarker(marker) { return this._markers.get(marker); } createEventObservable(eventName, marker) { return new Observable(observer => { this._markers.get(marker).then(m => m.addListener(eventName, e => this._zone.run(() => observer.next(e)))); }); } } MarkerManager.decorators = [ { type: Injectable } ]; MarkerManager.ctorParameters = () => [ { type: GoogleMapsAPIWrapper }, { type: NgZone } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvbWFuYWdlcnMvbWFya2VyLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHcEUsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFBc0IsWUFBa0MsRUFBWSxLQUFhO1FBQTNELGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQUFZLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIdkUsYUFBUSxHQUNkLElBQUksR0FBRyxFQUEwQyxDQUFDO0lBRThCLENBQUM7SUFFL0UsZ0JBQWdCLENBQUMsTUFBaUQ7O1lBQ3RFLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtnQkFDbkIsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDbkY7UUFDSCxDQUFDO0tBQUE7SUFFRCxZQUFZLENBQUMsZUFBMEI7UUFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3pCLHlCQUF5QjtZQUN6QixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMxQjtRQUNELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQTBC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aUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQscUJBQXFCLENBQ2pCLFNBQXVGLEVBQ3ZGLE1BQWlCO1FBQ25CLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2pDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3RFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXBHRixVQUFVOzs7WUFGRixvQkFBb0I7WUFMUixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFnbU1hcmtlciB9IGZyb20gJy4vLi4vLi4vZGlyZWN0aXZlcy9tYXJrZXInO1xuXG5pbXBvcnQgeyBHb29nbGVNYXBzQVBJV3JhcHBlciB9IGZyb20gJy4vLi4vZ29vZ2xlLW1hcHMtYXBpLXdyYXBwZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWFya2VyTWFuYWdlciB7XG4gIHByb3RlY3RlZCBfbWFya2VyczogTWFwPEFnbU1hcmtlciwgUHJvbWlzZTxnb29nbGUubWFwcy5NYXJrZXI+PiA9XG4gICAgICBuZXcgTWFwPEFnbU1hcmtlciwgUHJvbWlzZTxnb29nbGUubWFwcy5NYXJrZXI+PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfbWFwc1dyYXBwZXI6IEdvb2dsZU1hcHNBUElXcmFwcGVyLCBwcm90ZWN0ZWQgX3pvbmU6IE5nWm9uZSkge31cblxuICBhc3luYyBjb252ZXJ0QW5pbWF0aW9uKHVpQW5pbToga2V5b2YgdHlwZW9mIGdvb2dsZS5tYXBzLkFuaW1hdGlvbiB8IG51bGwpIHtcbiAgICBpZiAodWlBbmltID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX21hcHNXcmFwcGVyLmdldE5hdGl2ZU1hcCgpLnRoZW4oKCkgPT4gZ29vZ2xlLm1hcHMuQW5pbWF0aW9uW3VpQW5pbV0pO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZU1hcmtlcihtYXJrZXJEaXJlY3RpdmU6IEFnbU1hcmtlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1hcmtlclByb21pc2UgPSB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXJEaXJlY3RpdmUpO1xuICAgIGlmIChtYXJrZXJQcm9taXNlID09IG51bGwpIHtcbiAgICAgIC8vIG1hcmtlciBhbHJlYWR5IGRlbGV0ZWRcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcmtlclByb21pc2UudGhlbigobWFya2VyOiBnb29nbGUubWFwcy5NYXJrZXIpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIG1hcmtlci5zZXRNYXAobnVsbCk7XG4gICAgICAgIHRoaXMuX21hcmtlcnMuZGVsZXRlKG1hcmtlckRpcmVjdGl2ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZU1hcmtlclBvc2l0aW9uKG1hcmtlcjogQWdtTWFya2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlcikudGhlbihcbiAgICAgICAgKG06IGdvb2dsZS5tYXBzLk1hcmtlcikgPT4gbS5zZXRQb3NpdGlvbih7bGF0OiBtYXJrZXIubGF0aXR1ZGUsIGxuZzogbWFya2VyLmxvbmdpdHVkZX0pKTtcbiAgfVxuXG4gIHVwZGF0ZVRpdGxlKG1hcmtlcjogQWdtTWFya2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlcikudGhlbigobTogZ29vZ2xlLm1hcHMuTWFya2VyKSA9PiBtLnNldFRpdGxlKG1hcmtlci50aXRsZSkpO1xuICB9XG5cbiAgdXBkYXRlTGFiZWwobWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2Vycy5nZXQobWFya2VyKS50aGVuKChtOiBnb29nbGUubWFwcy5NYXJrZXIpID0+IHsgbS5zZXRMYWJlbChtYXJrZXIubGFiZWwpOyB9KTtcbiAgfVxuXG4gIHVwZGF0ZURyYWdnYWJsZShtYXJrZXI6IEFnbU1hcmtlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpLnRoZW4oKG06IGdvb2dsZS5tYXBzLk1hcmtlcikgPT4gbS5zZXREcmFnZ2FibGUobWFya2VyLmRyYWdnYWJsZSkpO1xuICB9XG5cbiAgdXBkYXRlSWNvbihtYXJrZXI6IEFnbU1hcmtlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpLnRoZW4oKG06IGdvb2dsZS5tYXBzLk1hcmtlcikgPT4gbS5zZXRJY29uKG1hcmtlci5pY29uVXJsKSk7XG4gIH1cblxuICB1cGRhdGVPcGFjaXR5KG1hcmtlcjogQWdtTWFya2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlcikudGhlbigobTogZ29vZ2xlLm1hcHMuTWFya2VyKSA9PiBtLnNldE9wYWNpdHkobWFya2VyLm9wYWNpdHkpKTtcbiAgfVxuXG4gIHVwZGF0ZVZpc2libGUobWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2Vycy5nZXQobWFya2VyKS50aGVuKChtOiBnb29nbGUubWFwcy5NYXJrZXIpID0+IG0uc2V0VmlzaWJsZShtYXJrZXIudmlzaWJsZSkpO1xuICB9XG5cbiAgdXBkYXRlWkluZGV4KG1hcmtlcjogQWdtTWFya2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlcikudGhlbigobTogZ29vZ2xlLm1hcHMuTWFya2VyKSA9PiBtLnNldFpJbmRleChtYXJrZXIuekluZGV4KSk7XG4gIH1cblxuICB1cGRhdGVDbGlja2FibGUobWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2Vycy5nZXQobWFya2VyKS50aGVuKChtOiBnb29nbGUubWFwcy5NYXJrZXIpID0+IG0uc2V0Q2xpY2thYmxlKG1hcmtlci5jbGlja2FibGUpKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUFuaW1hdGlvbihtYXJrZXI6IEFnbU1hcmtlcikge1xuICAgIGNvbnN0IG0gPSBhd2FpdCB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpO1xuICAgIG0uc2V0QW5pbWF0aW9uKGF3YWl0IHRoaXMuY29udmVydEFuaW1hdGlvbihtYXJrZXIuYW5pbWF0aW9uKSk7XG4gIH1cblxuICBhZGRNYXJrZXIobWFya2VyOiBBZ21NYXJrZXIpIHtcbiAgICBjb25zdCBtYXJrZXJQcm9taXNlID0gbmV3IFByb21pc2U8Z29vZ2xlLm1hcHMuTWFya2VyPihhc3luYyAocmVzb2x2ZSkgPT5cbiAgICAgdGhpcy5fbWFwc1dyYXBwZXIuY3JlYXRlTWFya2VyKHtcbiAgICAgICAgcG9zaXRpb246IHtsYXQ6IG1hcmtlci5sYXRpdHVkZSwgbG5nOiBtYXJrZXIubG9uZ2l0dWRlfSxcbiAgICAgICAgbGFiZWw6IG1hcmtlci5sYWJlbCxcbiAgICAgICAgZHJhZ2dhYmxlOiBtYXJrZXIuZHJhZ2dhYmxlLFxuICAgICAgICBpY29uOiBtYXJrZXIuaWNvblVybCxcbiAgICAgICAgb3BhY2l0eTogbWFya2VyLm9wYWNpdHksXG4gICAgICAgIHZpc2libGU6IG1hcmtlci52aXNpYmxlLFxuICAgICAgICB6SW5kZXg6IG1hcmtlci56SW5kZXgsXG4gICAgICAgIHRpdGxlOiBtYXJrZXIudGl0bGUsXG4gICAgICAgIGNsaWNrYWJsZTogbWFya2VyLmNsaWNrYWJsZSxcbiAgICAgICAgYW5pbWF0aW9uOiBhd2FpdCB0aGlzLmNvbnZlcnRBbmltYXRpb24obWFya2VyLmFuaW1hdGlvbiksXG4gICAgICB9KS50aGVuKHJlc29sdmUpKTtcbiAgICB0aGlzLl9tYXJrZXJzLnNldChtYXJrZXIsIG1hcmtlclByb21pc2UpO1xuICB9XG5cbiAgZ2V0TmF0aXZlTWFya2VyKG1hcmtlcjogQWdtTWFya2VyKTogUHJvbWlzZTxnb29nbGUubWFwcy5NYXJrZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2Vycy5nZXQobWFya2VyKTtcbiAgfVxuXG4gIGNyZWF0ZUV2ZW50T2JzZXJ2YWJsZTxUIGV4dGVuZHMgKGdvb2dsZS5tYXBzLk1vdXNlRXZlbnQgfCB2b2lkKT4oXG4gICAgICBldmVudE5hbWU6IGdvb2dsZS5tYXBzLk1hcmtlck1vdXNlRXZlbnROYW1lcyB8IGdvb2dsZS5tYXBzLk1hcmtlckNoYW5nZU9wdGlvbkV2ZW50TmFtZXMsXG4gICAgICBtYXJrZXI6IEFnbU1hcmtlcik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpLnRoZW4obSA9PlxuICAgICAgICBtLmFkZExpc3RlbmVyKGV2ZW50TmFtZSwgZSA9PiB0aGlzLl96b25lLnJ1bigoKSA9PiBvYnNlcnZlci5uZXh0KGUpKSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==