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]

247 lines 16.6 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 { 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 {?} */ const TAG = 'AmapBezierCurve'; export class AmapBezierCurveService { /** * @param {?} amaps * @param {?} logger * @param {?} ngZone * @param {?} plugins */ constructor(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 {?} */ get() { return this.bezierCurve$.asObservable(); } /** * 创建贝瑟尔曲线 AMap.BezierCurve * @param {?} options 选项 * @return {?} */ create(options) { return this.amaps.get().pipe(map((/** * @param {?} m * @return {?} */ m => { options.map = m; this.bezierCurve = this.ngZone.runOutsideAngular((/** * @return {?} */ () => new AMap.BezierCurve(options))); this.logger.d(TAG, 'new BezierCurve created.'); this.bezierCurve$.next(this.bezierCurve); this.bezierCurve$.complete(); return this.bezierCurve; }))); } /** * 销毁贝瑟尔曲线 * @return {?} */ destroy() { this.get().subscribe((/** * @param {?} m * @return {?} */ m => { m.setMap(null); this.logger.d(TAG, 'BezierCurve destroyed.'); this.bezierCurve = null; })); } /** * @return {?} */ getEditor() { // plugin is loading: return this.editor$.asObservable(); } /** * @return {?} */ getPolyEditor() { return this.polyEditor$.asObservable(); } /** * 加载编辑插件 * @return {?} */ loadEditor() { return this.plugins.load('AMap.BezierCurveEditor'); } /** * @return {?} */ loadPolyEditor() { return this.plugins.load('AMap.PolyEditor'); } /** * 创建编辑器 * @return {?} */ createEditor() { return this.loadEditor().pipe(switchMapTo(zip(this.amaps.get(), this.get())), map((/** * @param {?} __0 * @return {?} */ ([m, p]) => { this.editor = this.ngZone.runOutsideAngular((/** * @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 {?} */ createPolyEditor() { return this.loadPolyEditor().pipe(switchMapTo(zip(this.amaps.get(), this.get())), map((/** * @param {?} __0 * @return {?} */ ([m, p]) => { this.polyEditor = this.ngZone.runOutsideAngular((/** * @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 开关选项 * @return {?} */ toggleEditor(v) { if (v && !this.editor) { this.createEditor().subscribe((/** * @param {?} editor * @return {?} */ editor => editor.open())); return; } if (this.editor) { if (v) { this.editor.open(); } else { this.editor.close(); } } } /** * @param {?} v * @return {?} */ togglePolyEditor(v) { if (v && !this.polyEditor) { this.createPolyEditor().subscribe((/** * @param {?} editor * @return {?} */ editor => editor.open())); return; } if (this.polyEditor) { if (v) { this.polyEditor.open(); } else { this.polyEditor.close(); } } } } AmapBezierCurveService.decorators = [ { type: Injectable } ]; /** @nocollapse */ AmapBezierCurveService.ctorParameters = () => [ { type: AMapService }, { type: LoggerService }, { type: NgZone }, { type: PluginLoaderService } ]; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1iZXppZXItY3VydmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbWFwLyIsInNvdXJjZXMiOlsiZGlyZWN0aXZlcy9hbWFwLWJlemllci1jdXJ2ZS9hbWFwLWJlemllci1jdXJ2ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztNQUluRSxHQUFHLEdBQUcsaUJBQWlCO0FBRzdCLE1BQU0sT0FBTyxzQkFBc0I7Ozs7Ozs7SUFRakMsWUFDVSxLQUFrQixFQUNsQixNQUFxQixFQUNyQixNQUFjLEVBQ2QsT0FBNEI7UUFINUIsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQVY5QixpQkFBWSxHQUFHLElBQUksYUFBYSxDQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXpDLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBTSxDQUFDLENBQUMsQ0FBQztRQUVwQyxnQkFBVyxHQUFHLElBQUksYUFBYSxDQUFNLENBQUMsQ0FBQyxDQUFDO0lBTzdDLENBQUM7Ozs7O0lBS0osR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzs7Ozs7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RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN4QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3pCO1NBQ0Y7SUFDSCxDQUFDOzs7WUFwSUYsVUFBVTs7OztZQVJGLFdBQVc7WUFDWCxhQUFhO1lBSkQsTUFBTTtZQUtsQixtQkFBbUI7Ozs7Ozs7SUFRMUIsNkNBQXlCOzs7OztJQUN6Qiw4Q0FBaUQ7Ozs7O0lBQ2pELHdDQUFvQjs7Ozs7SUFDcEIseUNBQTRDOzs7OztJQUM1Qyw0Q0FBd0I7Ozs7O0lBQ3hCLDZDQUFnRDs7Ozs7SUFHOUMsdUNBQTBCOzs7OztJQUMxQix3Q0FBNkI7Ozs7O0lBQzdCLHdDQUFzQjs7Ozs7SUFDdEIseUNBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwVG8gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBTWFwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGx1Z2luTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbHVnaW4tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0dGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9pbnRlcmZhY2VzJztcbmRlY2xhcmUgY29uc3QgQU1hcDogYW55O1xuXG5jb25zdCBUQUcgPSAnQW1hcEJlemllckN1cnZlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFtYXBCZXppZXJDdXJ2ZVNlcnZpY2UgaW1wbGVtZW50cyBHZXR0ZXI8QU1hcC5CZXppZXJDdXJ2ZT4ge1xuICBwcml2YXRlIGJlemllckN1cnZlOiBhbnk7XG4gIHByaXZhdGUgYmV6aWVyQ3VydmUkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBlZGl0b3IkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgcHJpdmF0ZSBwb2x5RWRpdG9yOiBhbnk7XG4gIHByaXZhdGUgcG9seUVkaXRvciQgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW1hcHM6IEFNYXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBwbHVnaW5zOiBQbHVnaW5Mb2FkZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIOiOt+WPlui0neeRn+WwlOabsue6v1xuICAgKi9cbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLmJlemllckN1cnZlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rotJ3nkZ/lsJTmm7Lnur8gQU1hcC5CZXppZXJDdXJ2ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyDpgInpoblcbiAgICovXG4gIGNyZWF0ZShvcHRpb25zOiBBTWFwLkJlemllckN1cnZlLk9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5hbWFwcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKG0gPT4ge1xuICAgICAgICBvcHRpb25zLm1hcCA9IG07XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgQU1hcC5CZXppZXJDdXJ2ZShvcHRpb25zKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnbmV3IEJlemllckN1cnZlIGNyZWF0ZWQuJyk7XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUkLm5leHQodGhpcy5iZXppZXJDdXJ2ZSk7XG4gICAgICAgIHRoaXMuYmV6aWVyQ3VydmUkLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJlemllckN1cnZlO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDplIDmr4HotJ3nkZ/lsJTmm7Lnur9cbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5nZXQoKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICBtLnNldE1hcChudWxsKTtcbiAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnQmV6aWVyQ3VydmUgZGVzdHJveWVkLicpO1xuICAgICAgdGhpcy5iZXppZXJDdXJ2ZSA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0b3IoKSB7XG4gICAgLy8gcGx1Z2luIGlzIGxvYWRpbmc6XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldFBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9seUVkaXRvciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L2957yW6L6R5o+S5Lu2XG4gICAqL1xuICBsb2FkRWRpdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbnMubG9hZCgnQU1hcC5CZXppZXJDdXJ2ZUVkaXRvcicpO1xuICB9XG5cbiAgbG9hZFBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2lucy5sb2FkKCdBTWFwLlBvbHlFZGl0b3InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rnvJbovpHlmahcbiAgICovXG4gIGNyZWF0ZUVkaXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkRWRpdG9yKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcFRvKHppcCh0aGlzLmFtYXBzLmdldCgpLCB0aGlzLmdldCgpKSksXG4gICAgICBtYXAoKFttLCBwXSkgPT4ge1xuICAgICAgICB0aGlzLmVkaXRvciA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IG5ldyBBTWFwLkJlemllckN1cnZlRWRpdG9yKG0sIHApKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICduZXcgQmV6aWVyQ3VydmVFZGl0b3IgY3JlYXRlZC4nKTtcbiAgICAgICAgdGhpcy5lZGl0b3IkLm5leHQodGhpcy5lZGl0b3IpO1xuICAgICAgICB0aGlzLmVkaXRvciQuY29tcGxldGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZVBvbHlFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZFBvbHlFZGl0b3IoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwVG8oemlwKHRoaXMuYW1hcHMuZ2V0KCksIHRoaXMuZ2V0KCkpKSxcbiAgICAgIG1hcCgoW20sIHBdKSA9PiB7XG4gICAgICAgIHRoaXMucG9seUVkaXRvciA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IG5ldyBBTWFwLlBvbHlFZGl0b3IobSwgcCkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ25ldyBQb2x5RWRpdG9yIGNyZWF0ZWQuJyk7XG4gICAgICAgIHRoaXMucG9seUVkaXRvciQubmV4dCh0aGlzLnBvbHlFZGl0b3IpO1xuICAgICAgICB0aGlzLnBvbHlFZGl0b3IkLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnBvbHlFZGl0b3I7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOW8gOWFs+e8lui+keWZqFxuICAgKiBAcGFyYW0gdiDlvIDlhbPpgInpoblcbiAgICovXG4gIHRvZ2dsZUVkaXRvcih2OiBib29sZWFuKSB7XG4gICAgaWYgKHYgJiYgIXRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmNyZWF0ZUVkaXRvcigpLnN1YnNjcmliZShlZGl0b3IgPT4gZWRpdG9yLm9wZW4oKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICBpZiAodikge1xuICAgICAgICB0aGlzLmVkaXRvci5vcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVkaXRvci5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVBvbHlFZGl0b3IodjogYm9vbGVhbikge1xuICAgIGlmICh2ICYmICF0aGlzLnBvbHlFZGl0b3IpIHtcbiAgICAgIHRoaXMuY3JlYXRlUG9seUVkaXRvcigpLnN1YnNjcmliZShlZGl0b3IgPT4gZWRpdG9yLm9wZW4oKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9seUVkaXRvcikge1xuICAgICAgaWYgKHYpIHtcbiAgICAgICAgdGhpcy5wb2x5RWRpdG9yLm9wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9seUVkaXRvci5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19