UNPKG

ngx-amap

Version:

[![npm](https://img.shields.io/npm/v/ngx-amap.svg)][npm-badge-url] [![npm](https://img.shields.io/npm/dm/ngx-amap.svg)][npm-badge-url] [![Build Status](https://travis-ci.org/xieziyu/ngx-amap.svg?branch=master)][ci-url]

312 lines 18.9 kB
/** * @fileoverview added by tsickle * Generated from: directives/amap-bezier-curve/amap-bezier-curve.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable, NgZone } from '@angular/core'; import { ReplaySubject, zip } from 'rxjs'; import { map, switchMapTo } from 'rxjs/operators'; import { AMapService } from '../../shared/amap.service'; import { LoggerService } from '../../shared/logger/logger.service'; import { PluginLoaderService } from '../../shared/plugin-loader.service'; /** @type {?} */ var TAG = 'AmapBezierCurve'; var AmapBezierCurveService = /** @class */ (function () { function AmapBezierCurveService(amaps, logger, ngZone, plugins) { this.amaps = amaps; this.logger = logger; this.ngZone = ngZone; this.plugins = plugins; this.bezierCurve$ = new ReplaySubject(1); this.editor$ = new ReplaySubject(1); this.polyEditor$ = new ReplaySubject(1); } /** * 获取贝瑟尔曲线 */ /** * 获取贝瑟尔曲线 * @return {?} */ AmapBezierCurveService.prototype.get = /** * 获取贝瑟尔曲线 * @return {?} */ function () { return this.bezierCurve$.asObservable(); }; /** * 创建贝瑟尔曲线 AMap.BezierCurve * @param options 选项 */ /** * 创建贝瑟尔曲线 AMap.BezierCurve * @param {?} options 选项 * @return {?} */ AmapBezierCurveService.prototype.create = /** * 创建贝瑟尔曲线 AMap.BezierCurve * @param {?} options 选项 * @return {?} */ function (options) { var _this = this; return this.amaps.get().pipe(map((/** * @param {?} m * @return {?} */ function (m) { options.map = m; _this.bezierCurve = _this.ngZone.runOutsideAngular((/** * @return {?} */ function () { return new AMap.BezierCurve(options); })); _this.logger.d(TAG, 'new BezierCurve created.'); _this.bezierCurve$.next(_this.bezierCurve); _this.bezierCurve$.complete(); return _this.bezierCurve; }))); }; /** * 销毁贝瑟尔曲线 */ /** * 销毁贝瑟尔曲线 * @return {?} */ AmapBezierCurveService.prototype.destroy = /** * 销毁贝瑟尔曲线 * @return {?} */ function () { var _this = this; this.get().subscribe((/** * @param {?} m * @return {?} */ function (m) { m.setMap(null); _this.logger.d(TAG, 'BezierCurve destroyed.'); _this.bezierCurve = null; })); }; /** * @return {?} */ AmapBezierCurveService.prototype.getEditor = /** * @return {?} */ function () { // plugin is loading: return this.editor$.asObservable(); }; /** * @return {?} */ AmapBezierCurveService.prototype.getPolyEditor = /** * @return {?} */ function () { return this.polyEditor$.asObservable(); }; /** * 加载编辑插件 */ /** * 加载编辑插件 * @return {?} */ AmapBezierCurveService.prototype.loadEditor = /** * 加载编辑插件 * @return {?} */ function () { return this.plugins.load('AMap.BezierCurveEditor'); }; /** * @return {?} */ AmapBezierCurveService.prototype.loadPolyEditor = /** * @return {?} */ function () { return this.plugins.load('AMap.PolyEditor'); }; /** * 创建编辑器 */ /** * 创建编辑器 * @return {?} */ AmapBezierCurveService.prototype.createEditor = /** * 创建编辑器 * @return {?} */ function () { var _this = this; return this.loadEditor().pipe(switchMapTo(zip(this.amaps.get(), this.get())), map((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), m = _b[0], p = _b[1]; _this.editor = _this.ngZone.runOutsideAngular((/** * @return {?} */ function () { return new AMap.BezierCurveEditor(m, p); })); _this.logger.d(TAG, 'new BezierCurveEditor created.'); _this.editor$.next(_this.editor); _this.editor$.complete(); return _this.editor; }))); }; /** * @return {?} */ AmapBezierCurveService.prototype.createPolyEditor = /** * @return {?} */ function () { var _this = this; return this.loadPolyEditor().pipe(switchMapTo(zip(this.amaps.get(), this.get())), map((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), m = _b[0], p = _b[1]; _this.polyEditor = _this.ngZone.runOutsideAngular((/** * @return {?} */ function () { return new AMap.PolyEditor(m, p); })); _this.logger.d(TAG, 'new PolyEditor created.'); _this.polyEditor$.next(_this.polyEditor); _this.polyEditor$.complete(); return _this.polyEditor; }))); }; /** * 开关编辑器 * @param v 开关选项 */ /** * 开关编辑器 * @param {?} v 开关选项 * @return {?} */ AmapBezierCurveService.prototype.toggleEditor = /** * 开关编辑器 * @param {?} v 开关选项 * @return {?} */ function (v) { if (v && !this.editor) { this.createEditor().subscribe((/** * @param {?} editor * @return {?} */ function (editor) { return editor.open(); })); return; } if (this.editor) { if (v) { this.editor.open(); } else { this.editor.close(); } } }; /** * @param {?} v * @return {?} */ AmapBezierCurveService.prototype.togglePolyEditor = /** * @param {?} v * @return {?} */ function (v) { if (v && !this.polyEditor) { this.createPolyEditor().subscribe((/** * @param {?} editor * @return {?} */ function (editor) { return editor.open(); })); return; } if (this.polyEditor) { if (v) { this.polyEditor.open(); } else { this.polyEditor.close(); } } }; AmapBezierCurveService.decorators = [ { type: Injectable } ]; /** @nocollapse */ AmapBezierCurveService.ctorParameters = function () { return [ { type: AMapService }, { type: LoggerService }, { type: NgZone }, { type: PluginLoaderService } ]; }; return AmapBezierCurveService; }()); export { AmapBezierCurveService }; if (false) { /** * @type {?} * @private */ AmapBezierCurveService.prototype.bezierCurve; /** * @type {?} * @private */ AmapBezierCurveService.prototype.bezierCurve$; /** * @type {?} * @private */ AmapBezierCurveService.prototype.editor; /** * @type {?} * @private */ AmapBezierCurveService.prototype.editor$; /** * @type {?} * @private */ AmapBezierCurveService.prototype.polyEditor; /** * @type {?} * @private */ AmapBezierCurveService.prototype.polyEditor$; /** * @type {?} * @private */ AmapBezierCurveService.prototype.amaps; /** * @type {?} * @private */ AmapBezierCurveService.prototype.logger; /** * @type {?} * @private */ AmapBezierCurveService.prototype.ngZone; /** * @type {?} * @private */ AmapBezierCurveService.prototype.plugins; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1iZXppZXItY3VydmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbWFwLyIsInNvdXJjZXMiOlsiZGlyZWN0aXZlcy9hbWFwLWJlemllci1jdXJ2ZS9hbWFwLWJlemllci1jdXJ2ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7SUFJbkUsR0FBRyxHQUFHLGlCQUFpQjtBQUU3QjtJQVNFLGdDQUNVLEtBQWtCLEVBQ2xCLE1BQXFCLEVBQ3JCLE1BQWMsRUFDZCxPQUE0QjtRQUg1QixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBVjlCLGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQU0sQ0FBQyxDQUFDLENBQUM7UUFFekMsWUFBTyxHQUFHLElBQUksYUFBYSxDQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXBDLGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQU0sQ0FBQyxDQUFDLENBQUM7SUFPN0MsQ0FBQztJQUVKOztPQUVHOzs7OztJQUNILG9DQUFHOzs7O0lBQUg7UUFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7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RUFBRSxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUVELGlEQUFnQjs7OztJQUFoQixVQUFpQixDQUFVO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTOzs7O1lBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQWIsQ0FBYSxFQUFDLENBQUM7WUFDM0QsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxFQUFFO2dCQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUN6QjtTQUNGO0lBQ0gsQ0FBQzs7Z0JBcElGLFVBQVU7Ozs7Z0JBUkYsV0FBVztnQkFDWCxhQUFhO2dCQUpELE1BQU07Z0JBS2xCLG1CQUFtQjs7SUEySTVCLDZCQUFDO0NBQUEsQUFySUQsSUFxSUM7U0FwSVksc0JBQXNCOzs7Ozs7SUFDakMsNkNBQXlCOzs7OztJQUN6Qiw4Q0FBaUQ7Ozs7O0lBQ2pELHdDQUFvQjs7Ozs7SUFDcEIseUNBQTRDOzs7OztJQUM1Qyw0Q0FBd0I7Ozs7O0lBQ3hCLDZDQUFnRDs7Ozs7SUFHOUMsdUNBQTBCOzs7OztJQUMxQix3Q0FBNkI7Ozs7O0lBQzdCLHdDQUFzQjs7Ozs7SUFDdEIseUNBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwVG8gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBTWFwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGx1Z2luTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbHVnaW4tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0dGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9pbnRlcmZhY2VzJztcbmRlY2xhcmUgY29uc3QgQU1hcDogYW55O1xuXG5jb25zdCBUQUcgPSAnQW1hcEJlemllckN1cnZlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFtYXBCZXppZXJDdXJ2ZVNlcnZpY2UgaW1wbGVtZW50cyBHZXR0ZXI8QU1hcC5CZXppZXJDdXJ2ZT4ge1xuICBwcml2YXRlIGJlemllckN1cnZlOiBhbnk7XG4gIHByaXZhdGUgYmV6aWVyQ3VydmUkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBlZGl0b3IkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgcHJpdmF0ZSBwb2x5RWRpdG9yOiBhbnk7XG4gIHByaXZhdGUgcG9seUVkaXRvciQgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW1hcHM6IEFNYXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBwbHVnaW5zOiBQbHVnaW5Mb2FkZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIOiOt+WPlui0neeRn+WwlOabsue6v1xuICAgKi9cbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLmJlemllckN1cnZlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rotJ3nkZ/lsJTmm7Lnur8gQU1hcC5CZXppZXJDdXJ2ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyDpgInpoblcbiAgICovXG4gIGNyZWF0ZShvcHRpb25zOiBBTWFwLkJlemllckN1cnZlLk9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5hbWFwcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKG0gPT4ge1xuICAgICAgICBvcHRpb25zLm1hcCA9IG07XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgQU1hcC5CZXppZXJDdXJ2ZShvcHRpb25zKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnbmV3IEJlemllckN1cnZlIGNyZWF0ZWQuJyk7XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUkLm5leHQodGhpcy5iZXppZXJDdXJ2ZSk7XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUkLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJlemllckN1cnZlO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDplIDmr4HotJ3nkZ/lsJTmm7Lnur9cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5nZXQoKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICBtLnNldE1hcChudWxsKTtcbiAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnQmV6aWVyQ3VydmUgZGVzdHJveWVkLicpO1xuICAgICAgdGhpcy5iZXppZXJDdXJ2ZSA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0b3IoKSB7XG4gICAgLy8gcGx1Z2luIGlzIGxvYWRpbmc6XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldFBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9seUVkaXRvciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L2957yW6L6R5o+S5Lu2XG4gICAqL1xuICBsb2FkRWRpdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbnMubG9hZCgnQU1hcC5CZXppZXJDdXJ2ZUVkaXRvcicpO1xuICB9XG5cbiAgbG9hZFBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2lucy5sb2FkKCdBTWFwLlBvbHlFZGl0b3InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rnvJbovpHlmahcbiAgICovXG4gIGNyZWF0ZUVkaXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRWRpdG9yKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcFRvKHppcCh0aGlzLmFtYXBzLmdldCgpLCB0aGlzLmdldCgpKSksXG4gICAgICBtYXAoKFttLCBwXSkgPT4ge1xuICAgICAgICB0aGlzLmVkaXRvciA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IG5ldyBBTWFwLkJlemllckN1cnZlRWRpdG9yKG0sIHApKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICduZXcgQmV6aWVyQ3VydmVFZGl0b3IgY3JlYXRlZC4nKTtcbiAgICAgICAgdGhpcy5lZGl0b3IkLm5leHQodGhpcy5lZGl0b3IpO1xuICAgICAgICB0aGlzLmVkaXRvciQuY29tcGxldGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZVBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZFBvbHlFZGl0b3IoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwVG8oemlwKHRoaXMuYW1hcHMuZ2V0KCksIHRoaXMuZ2V0KCkpKSxcbiAgICAgIG1hcCgoW20sIHBdKSA9PiB7XG4gICAgICAgIHRoaXMucG9seUVkaXRvciA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IG5ldyBBTWFwLlBvbHlFZGl0b3IobSwgcCkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ25ldyBQb2x5RWRpdG9yIGNyZWF0ZWQuJyk7XG4gICAgICAgIHRoaXMucG9seUVkaXRvciQubmV4dCh0aGlzLnBvbHlFZGl0b3IpO1xuICAgICAgICB0aGlzLnBvbHlFZGl0b3IkLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnBvbHlFZGl0b3I7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOW8gOWFs+e8lui+keWZqFxuICAgKiBAcGFyYW0gdiDlvIDlhbPpgInpoblcbiAgICovXG4gIHRvZ2dsZUVkaXRvcih2OiBib29sZWFuKSB7XG4gICAgaWYgKHYgJiYgIXRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmNyZWF0ZUVkaXRvcigpLnN1YnNjcmliZShlZGl0b3IgPT4gZWRpdG9yLm9wZW4oKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICBpZiAodikge1xuICAgICAgICB0aGlzLmVkaXRvci5vcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVkaXRvci5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVBvbHlFZGl0b3IodjogYm9vbGVhbikge1xuICAgIGlmICh2ICYmICF0aGlzLnBvbHlFZGl0b3IpIHtcbiAgICAgIHRoaXMuY3JlYXRlUG9seUVkaXRvcigpLnN1YnNjcmliZShlZGl0b3IgPT4gZWRpdG9yLm9wZW4oKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9seUVkaXRvcikge1xuICAgICAgaWYgKHYpIHtcbiAgICAgICAgdGhpcy5wb2x5RWRpdG9yLm9wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9seUVkaXRvci5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19