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]

244 lines 16.9 kB
/** * @fileoverview added by tsickle * Generated from: directives/amap-polyline/amap-polyline.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, Input, Output, EventEmitter, NgZone, } from '@angular/core'; import { zip } from 'rxjs'; import { PathOverlayOptions, AMapPathOverlay } from '../../base/amap-path-overlay'; import { AmapPolylineService } from './amap-polyline.service'; import { LoggerService } from '../../shared/logger/logger.service'; import { EventBinderService } from '../../shared/event-binder.service'; import { getOptions, ChangeFilter } from '../../utils'; /** @type {?} */ const TAG = 'amap-polyline'; /** @type {?} */ const PolylineOptions = [ ...PathOverlayOptions, 'isOutline', 'outlineColor', 'geodesic', 'dirColor', 'borderWeight', 'showDir', 'path', ]; export class AmapPolylineDirective extends AMapPathOverlay { /** * @param {?} os * @param {?} binder * @param {?} logger * @param {?} ngZone */ constructor(os, binder, logger, ngZone) { super(os, binder); this.os = os; this.binder = binder; this.logger = logger; this.ngZone = ngZone; /** * 额外: 是否隐藏 */ this.hidden = false; /** * 额外: 是否开启编辑器 */ this.editor = false; // directive events: this.naReady = new EventEmitter(); this.inited = false; /** @type {?} */ const editor = this.os.getEditor(); this.naEditorAddNode = this.binder.bindEvent(editor, 'addnode'); this.naEditorRemoveNode = this.binder.bindEvent(editor, 'removenode'); this.naEditorAdjust = this.binder.bindEvent(editor, 'adjust'); this.naEditorEnd = this.binder.bindEvent(editor, 'end'); } /** * @return {?} */ ngOnDestroy() { this.os.destroy(); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { /** @type {?} */ const filter = ChangeFilter.of(changes); /** @type {?} */ const polyline = this.get(); if (!this.inited) { this.logger.d(TAG, 'initializing ...'); /** @type {?} */ const options = this.options || getOptions(this, PolylineOptions); this.logger.d(TAG, 'options:', options); this.os.create(options).subscribe((/** * @param {?} m * @return {?} */ m => { this.ngZone.run((/** * @return {?} */ () => this.naReady.emit(m))); this.logger.d(TAG, 'polyline is ready.'); })); this.inited = true; } else { zip(filter.has('path'), polyline).subscribe((/** * @param {?} __0 * @return {?} */ ([v, p]) => p.setPath(v))); zip(filter.has('options'), polyline).subscribe((/** * @param {?} __0 * @return {?} */ ([v, p]) => p.setOptions(v || {}))); zip(filter.has('extData'), polyline).subscribe((/** * @param {?} __0 * @return {?} */ ([v, p]) => p.setExtData(v))); } zip(filter.has('hidden'), polyline).subscribe((/** * @param {?} __0 * @return {?} */ ([v, p]) => (v ? p.hide() : p.show()))); filter.has('editor').subscribe((/** * @param {?} v * @return {?} */ v => this.os.toggleEditor(v))); } /** * 获取已创建的 AMap.Polyline 对象 * @return {?} */ get() { return this.os.get(); } } AmapPolylineDirective.decorators = [ { type: Directive, args: [{ selector: 'amap-polyline', exportAs: 'polyline', providers: [AmapPolylineService], },] } ]; /** @nocollapse */ AmapPolylineDirective.ctorParameters = () => [ { type: AmapPolylineService }, { type: EventBinderService }, { type: LoggerService }, { type: NgZone } ]; AmapPolylineDirective.propDecorators = { isOutline: [{ type: Input }], outlineColor: [{ type: Input }], geodesic: [{ type: Input }], dirColor: [{ type: Input }], borderWeight: [{ type: Input }], showDir: [{ type: Input }], path: [{ type: Input }], hidden: [{ type: Input }], editor: [{ type: Input }], options: [{ type: Input }], naReady: [{ type: Output }], naEditorAddNode: [{ type: Output }], naEditorRemoveNode: [{ type: Output }], naEditorAdjust: [{ type: Output }], naEditorEnd: [{ type: Output }] }; if (false) { /** * 线条是否带描边 * @type {?} */ AmapPolylineDirective.prototype.isOutline; /** * 线条描边颜色 * @type {?} */ AmapPolylineDirective.prototype.outlineColor; /** * 是否绘制成大地线 * @type {?} */ AmapPolylineDirective.prototype.geodesic; /** * 方向箭头颜色 * @type {?} */ AmapPolylineDirective.prototype.dirColor; /** * 描边的宽度 * @type {?} */ AmapPolylineDirective.prototype.borderWeight; /** * 是否延路径显示方向箭头 * @type {?} */ AmapPolylineDirective.prototype.showDir; /** * 折线的节点数组 * @type {?} */ AmapPolylineDirective.prototype.path; /** * 额外: 是否隐藏 * @type {?} */ AmapPolylineDirective.prototype.hidden; /** * 额外: 是否开启编辑器 * @type {?} */ AmapPolylineDirective.prototype.editor; /** * 额外: 会覆盖其他属性的配置方式 * @type {?} */ AmapPolylineDirective.prototype.options; /** @type {?} */ AmapPolylineDirective.prototype.naReady; /** @type {?} */ AmapPolylineDirective.prototype.naEditorAddNode; /** @type {?} */ AmapPolylineDirective.prototype.naEditorRemoveNode; /** @type {?} */ AmapPolylineDirective.prototype.naEditorAdjust; /** @type {?} */ AmapPolylineDirective.prototype.naEditorEnd; /** * @type {?} * @private */ AmapPolylineDirective.prototype.inited; /** * @type {?} * @protected */ AmapPolylineDirective.prototype.os; /** * @type {?} * @protected */ AmapPolylineDirective.prototype.binder; /** * @type {?} * @private */ AmapPolylineDirective.prototype.logger; /** * @type {?} * @private */ AmapPolylineDirective.prototype.ngZone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1wb2x5bGluZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvYW1hcC1wb2x5bGluZS9hbWFwLXBvbHlsaW5lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBR1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7TUFFakQsR0FBRyxHQUFHLGVBQWU7O01BQ3JCLGVBQWUsR0FBRztJQUN0QixHQUFHLGtCQUFrQjtJQUNyQixXQUFXO0lBQ1gsY0FBYztJQUNkLFVBQVU7SUFDVixVQUFVO0lBQ1YsY0FBYztJQUNkLFNBQVM7SUFDVCxNQUFNO0NBQ1A7QUFPRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBOEI7Ozs7Ozs7SUF1RHZFLFlBQ1ksRUFBdUIsRUFDdkIsTUFBMEIsRUFDNUIsTUFBcUIsRUFDckIsTUFBYztRQUV0QixLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBTFIsT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxD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O0lBQ2hELCtDQUE0Qzs7SUFDNUMsNENBQXlDOzs7OztJQUV6Qyx1Q0FBdUI7Ozs7O0lBR3JCLG1DQUFpQzs7Ozs7SUFDakMsdUNBQW9DOzs7OztJQUNwQyx1Q0FBNkI7Ozs7O0lBQzdCLHVDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGF0aE92ZXJsYXlPcHRpb25zLCBBTWFwUGF0aE92ZXJsYXkgfSBmcm9tICcuLi8uLi9iYXNlL2FtYXAtcGF0aC1vdmVybGF5JztcbmltcG9ydCB7IEFtYXBQb2x5bGluZVNlcnZpY2UgfSBmcm9tICcuL2FtYXAtcG9seWxpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudEJpbmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXZlbnQtYmluZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0T3B0aW9ucywgQ2hhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5jb25zdCBUQUcgPSAnYW1hcC1wb2x5bGluZSc7XG5jb25zdCBQb2x5bGluZU9wdGlvbnMgPSBbXG4gIC4uLlBhdGhPdmVybGF5T3B0aW9ucyxcbiAgJ2lzT3V0bGluZScsXG4gICdvdXRsaW5lQ29sb3InLFxuICAnZ2VvZGVzaWMnLFxuICAnZGlyQ29sb3InLFxuICAnYm9yZGVyV2VpZ2h0JyxcbiAgJ3Nob3dEaXInLFxuICAncGF0aCcsXG5dO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdhbWFwLXBvbHlsaW5lJyxcbiAgZXhwb3J0QXM6ICdwb2x5bGluZScsXG4gIHByb3ZpZGVyczogW0FtYXBQb2x5bGluZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBbWFwUG9seWxpbmVEaXJlY3RpdmUgZXh0ZW5kcyBBTWFwUGF0aE92ZXJsYXk8QU1hcC5Qb2x5bGluZT5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8vIC0tLS0gT3B0aW9ucyAtLS0tXG4gIC8qKlxuICAgKiDnur/mnaHmmK/lkKbluKbmj4/ovrlcbiAgICovXG4gIEBJbnB1dCgpIGlzT3V0bGluZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOe6v+adoeaPj+i+ueminOiJslxuICAgKi9cbiAgQElucHV0KCkgb3V0bGluZUNvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiDmmK/lkKbnu5jliLbmiJDlpKflnLDnur9cbiAgICovXG4gIEBJbnB1dCgpIGdlb2Rlc2ljOiBib29sZWFuO1xuICAvKipcbiAgICog5pa55ZCR566t5aS06aKc6ImyXG4gICAqL1xuICBASW5wdXQoKSBkaXJDb2xvcjogc3RyaW5nO1xuICAvKipcbiAgICog5o+P6L6555qE5a695bqmXG4gICAqL1xuICBASW5wdXQoKSBib3JkZXJXZWlnaHQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIOaYr+WQpuW7tui3r+W+hOaYvuekuuaWueWQkeeureWktFxuICAgKi9cbiAgQElucHV0KCkgc2hvd0RpcjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOaKmOe6v+eahOiKgueCueaVsOe7hFxuICAgKi9cbiAgQElucHV0KCkgcGF0aDogQU1hcC5Mb2NhdGlvblZhbHVlW107XG4gIC8qKlxuICAgKiDpop3lpJY6IOaYr+WQpumakOiXj1xuICAgKi9cbiAgQElucHV0KCkgaGlkZGVuID0gZmFsc2U7XG4gIC8qKlxuICAgKiDpop3lpJY6IOaYr+WQpuW8gOWQr+e8lui+keWZqFxuICAgKi9cbiAgQElucHV0KCkgZWRpdG9yID0gZmFsc2U7XG4gIC8qKlxuICAgKiDpop3lpJY6IOS8muimhuebluWFtuS7luWxnuaAp+eahOmFjee9ruaWueW8j1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uczogQU1hcC5Qb2x5bGluZS5PcHRpb25zO1xuXG4gIC8vIGRpcmVjdGl2ZSBldmVudHM6XG4gIEBPdXRwdXQoKSBuYVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIGVkaXRvciBldmVudHM6XG4gIEBPdXRwdXQoKSBuYUVkaXRvckFkZE5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFFZGl0b3JSZW1vdmVOb2RlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hRWRpdG9yQWRqdXN0OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hRWRpdG9yRW5kOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBwcml2YXRlIGluaXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvczogQW1hcFBvbHlsaW5lU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYmluZGVyOiBFdmVudEJpbmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgc3VwZXIob3MsIGJpbmRlcik7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5vcy5nZXRFZGl0b3IoKTtcbiAgICB0aGlzLm5hRWRpdG9yQWRkTm9kZSA9IHRoaXMuYmluZGVyLmJpbmRFdmVudChlZGl0b3IsICdhZGRub2RlJyk7XG4gICAgdGhpcy5uYUVkaXRvclJlbW92ZU5vZGUgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQoZWRpdG9yLCAncmVtb3Zlbm9kZScpO1xuICAgIHRoaXMubmFFZGl0b3JBZGp1c3QgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQoZWRpdG9yLCAnYWRqdXN0Jyk7XG4gICAgdGhpcy5uYUVkaXRvckVuZCA9IHRoaXMuYmluZGVyLmJpbmRFdmVudChlZGl0b3IsICdlbmQnKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMub3MuZGVzdHJveSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IGZpbHRlciA9IENoYW5nZUZpbHRlci5vZihjaGFuZ2VzKTtcbiAgICBjb25zdCBwb2x5bGluZSA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKCF0aGlzLmluaXRlZCkge1xuICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdpbml0aWFsaXppbmcgLi4uJyk7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zIHx8IGdldE9wdGlvbnM8QU1hcC5Qb2x5bGluZS5PcHRpb25zPih0aGlzLCBQb2x5bGluZU9wdGlvbnMpO1xuICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICdvcHRpb25zOicsIG9wdGlvbnMpO1xuICAgICAgdGhpcy5vcy5jcmVhdGUob3B0aW9ucykuc3Vic2NyaWJlKG0gPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5uYVJlYWR5LmVtaXQobSkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ3BvbHlsaW5lIGlzIHJlYWR5LicpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmluaXRlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHppcChmaWx0ZXIuaGFzPEFNYXAuTG9jYXRpb25WYWx1ZVtdPigncGF0aCcpLCBwb2x5bGluZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+IHAuc2V0UGF0aCh2KSk7XG4gICAgICB6aXAoZmlsdGVyLmhhczxBTWFwLlBvbHlsaW5lLk9wdGlvbnM+KCdvcHRpb25zJyksIHBvbHlsaW5lKS5zdWJzY3JpYmUoKFt2LCBwXSkgPT5cbiAgICAgICAgcC5zZXRPcHRpb25zKHYgfHwge30pLFxuICAgICAgKTtcbiAgICAgIHppcChmaWx0ZXIuaGFzPGFueT4oJ2V4dERhdGEnKSwgcG9seWxpbmUpLnN1YnNjcmliZSgoW3YsIHBdKSA9PiBwLnNldEV4dERhdGEodikpO1xuICAgIH1cblxuICAgIHppcChmaWx0ZXIuaGFzPGJvb2xlYW4+KCdoaWRkZW4nKSwgcG9seWxpbmUpLnN1YnNjcmliZSgoW3YsIHBdKSA9PiAodiA/IHAuaGlkZSgpIDogcC5zaG93KCkpKTtcbiAgICBmaWx0ZXIuaGFzPGJvb2xlYW4+KCdlZGl0b3InKS5zdWJzY3JpYmUodiA9PiB0aGlzLm9zLnRvZ2dsZUVkaXRvcih2KSk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5bey5Yib5bu655qEIEFNYXAuUG9seWxpbmUg5a+56LGhXG4gICAqL1xuICBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3MuZ2V0KCk7XG4gIH1cbn1cbiJdfQ==