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]

269 lines 18.3 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 * as tslib_1 from "tslib"; 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 {?} */ var TAG = 'amap-polyline'; /** @type {?} */ var PolylineOptions = tslib_1.__spread(PathOverlayOptions, [ 'isOutline', 'outlineColor', 'geodesic', 'dirColor', 'borderWeight', 'showDir', 'path', ]); var AmapPolylineDirective = /** @class */ (function (_super) { tslib_1.__extends(AmapPolylineDirective, _super); function AmapPolylineDirective(os, binder, logger, ngZone) { var _this = _super.call(this, os, binder) || this; _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 {?} */ var 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 _this; } /** * @return {?} */ AmapPolylineDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.os.destroy(); }; /** * @param {?} changes * @return {?} */ AmapPolylineDirective.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { var _this = this; /** @type {?} */ var filter = ChangeFilter.of(changes); /** @type {?} */ var polyline = this.get(); if (!this.inited) { this.logger.d(TAG, 'initializing ...'); /** @type {?} */ var options = this.options || getOptions(this, PolylineOptions); this.logger.d(TAG, 'options:', options); this.os.create(options).subscribe((/** * @param {?} m * @return {?} */ function (m) { _this.ngZone.run((/** * @return {?} */ function () { 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 {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), v = _b[0], p = _b[1]; return p.setPath(v); })); zip(filter.has('options'), polyline).subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), v = _b[0], p = _b[1]; return p.setOptions(v || {}); })); zip(filter.has('extData'), polyline).subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), v = _b[0], p = _b[1]; return p.setExtData(v); })); } zip(filter.has('hidden'), polyline).subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), v = _b[0], p = _b[1]; return (v ? p.hide() : p.show()); })); filter.has('editor').subscribe((/** * @param {?} v * @return {?} */ function (v) { return _this.os.toggleEditor(v); })); }; /** * 获取已创建的 AMap.Polyline 对象 */ /** * 获取已创建的 AMap.Polyline 对象 * @return {?} */ AmapPolylineDirective.prototype.get = /** * 获取已创建的 AMap.Polyline 对象 * @return {?} */ function () { return this.os.get(); }; AmapPolylineDirective.decorators = [ { type: Directive, args: [{ selector: 'amap-polyline', exportAs: 'polyline', providers: [AmapPolylineService], },] } ]; /** @nocollapse */ AmapPolylineDirective.ctorParameters = function () { return [ { 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 }] }; return AmapPolylineDirective; }(AMapPathOverlay)); export { AmapPolylineDirective }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1wb2x5bGluZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvYW1hcC1wb2x5bGluZS9hbWFwLXBvbHlsaW5lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUdaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7O0lBRWpELEdBQUcsR0FBRyxlQUFlOztJQUNyQixlQUFlLG9CQUNoQixrQkFBa0I7SUFDckIsV0FBVztJQUNYLGNBQWM7SUFDZCxVQUFVO0lBQ1YsVUFBVTtJQUNWLGNBQWM7SUFDZCxTQUFTO0lBQ1QsTUFBTTtFQUNQO0FBRUQ7SUFLMkMsaURBQThCO0lBdUR2RSwrQkFDWSxFQUF1QixFQUN2QixNQUEwQixFQUM1QixNQUFxQixFQUNyQixNQUFjO1FBSnhCLFlBTUUsa0JBQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQU1sQjtRQVhXLFFBQUUsR0FBRixFQUFFLENBQXFCO1FBQ3ZCLFlBQU0sR0FBTixNQUFNLENBQW9CO1FBQzVCLFlBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsWUFBTSxHQUFOLE1BQU0sQ0FBUTs7OztRQXpCZixZQUFNLEdBQUcsS0FB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QUk5Qix5Q0FBMkI7Ozs7O0lBSTNCLHlDQUEwQjs7Ozs7SUFJMUIsNkNBQThCOzs7OztJQUk5Qix3Q0FBMEI7Ozs7O0lBSTFCLHFDQUFvQzs7Ozs7SUFJcEMsdUNBQXdCOzs7OztJQUl4Qix1Q0FBd0I7Ozs7O0lBSXhCLHdDQUF3Qzs7SUFHeEMsd0NBQXVDOztJQUd2QyxnREFBNkM7O0lBQzdDLG1EQUFnRDs7SUFDaEQsK0NBQTRDOztJQUM1Qyw0Q0FBeUM7Ozs7O0lBRXpDLHVDQUF1Qjs7Ozs7SUFHckIsbUNBQWlDOzs7OztJQUNqQyx1Q0FBb0M7Ozs7O0lBQ3BDLHVDQUE2Qjs7Ozs7SUFDN0IsdUNBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQYXRoT3ZlcmxheU9wdGlvbnMsIEFNYXBQYXRoT3ZlcmxheSB9IGZyb20gJy4uLy4uL2Jhc2UvYW1hcC1wYXRoLW92ZXJsYXknO1xuaW1wb3J0IHsgQW1hcFBvbHlsaW5lU2VydmljZSB9IGZyb20gJy4vYW1hcC1wb2x5bGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50QmluZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9ldmVudC1iaW5kZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRPcHRpb25zLCBDaGFuZ2VGaWx0ZXIgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmNvbnN0IFRBRyA9ICdhbWFwLXBvbHlsaW5lJztcbmNvbnN0IFBvbHlsaW5lT3B0aW9ucyA9IFtcbiAgLi4uUGF0aE92ZXJsYXlPcHRpb25zLFxuICAnaXNPdXRsaW5lJyxcbiAgJ291dGxpbmVDb2xvcicsXG4gICdnZW9kZXNpYycsXG4gICdkaXJDb2xvcicsXG4gICdib3JkZXJXZWlnaHQnLFxuICAnc2hvd0RpcicsXG4gICdwYXRoJyxcbl07XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2FtYXAtcG9seWxpbmUnLFxuICBleHBvcnRBczogJ3BvbHlsaW5lJyxcbiAgcHJvdmlkZXJzOiBbQW1hcFBvbHlsaW5lU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFtYXBQb2x5bGluZURpcmVjdGl2ZSBleHRlbmRzIEFNYXBQYXRoT3ZlcmxheTxBTWFwLlBvbHlsaW5lPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLy8gLS0tLSBPcHRpb25zIC0tLS1cbiAgLyoqXG4gICAqIOe6v+adoeaYr+WQpuW4puaPj+i+uVxuICAgKi9cbiAgQElucHV0KCkgaXNPdXRsaW5lOiBib29sZWFuO1xuICAvKipcbiAgICog57q/5p2h5o+P6L656aKc6ImyXG4gICAqL1xuICBASW5wdXQoKSBvdXRsaW5lQ29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIOaYr+WQpue7mOWItuaIkOWkp+WcsOe6v1xuICAgKi9cbiAgQElucHV0KCkgZ2VvZGVzaWM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmlrnlkJHnrq3lpLTpopzoibJcbiAgICovXG4gIEBJbnB1dCgpIGRpckNvbG9yOiBzdHJpbmc7XG4gIC8qKlxuICAgKiDmj4/ovrnnmoTlrr3luqZcbiAgICovXG4gIEBJbnB1dCgpIGJvcmRlcldlaWdodDogbnVtYmVyO1xuICAvKipcbiAgICog5piv5ZCm5bu26Lev5b6E5pi+56S65pa55ZCR566t5aS0XG4gICAqL1xuICBASW5wdXQoKSBzaG93RGlyOiBib29sZWFuO1xuICAvKipcbiAgICog5oqY57q/55qE6IqC54K55pWw57uEXG4gICAqL1xuICBASW5wdXQoKSBwYXRoOiBBTWFwLkxvY2F0aW9uVmFsdWVbXTtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm6ZqQ6JePXG4gICAqL1xuICBASW5wdXQoKSBoaWRkZW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIOmineWkljog5piv5ZCm5byA5ZCv57yW6L6R5ZmoXG4gICAqL1xuICBASW5wdXQoKSBlZGl0b3IgPSBmYWxzZTtcbiAgLyoqXG4gICAqIOmineWkljog5Lya6KaG55uW5YW25LuW5bGe5oCn55qE6YWN572u5pa55byPXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zOiBBTWFwLlBvbHlsaW5lLk9wdGlvbnM7XG5cbiAgLy8gZGlyZWN0aXZlIGV2ZW50czpcbiAgQE91dHB1dCgpIG5hUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gZWRpdG9yIGV2ZW50czpcbiAgQE91dHB1dCgpIG5hRWRpdG9yQWRkTm9kZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoKSBuYUVkaXRvclJlbW92ZU5vZGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFFZGl0b3JBZGp1c3Q6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFFZGl0b3JFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIHByaXZhdGUgaW5pdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG9zOiBBbWFwUG9seWxpbmVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBiaW5kZXI6IEV2ZW50QmluZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICApIHtcbiAgICBzdXBlcihvcywgYmluZGVyKTtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLm9zLmdldEVkaXRvcigpO1xuICAgIHRoaXMubmFFZGl0b3JBZGROb2RlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KGVkaXRvciwgJ2FkZG5vZGUnKTtcbiAgICB0aGlzLm5hRWRpdG9yUmVtb3ZlTm9kZSA9IHRoaXMuYmluZGVyLmJpbmRFdmVudChlZGl0b3IsICdyZW1vdmVub2RlJyk7XG4gICAgdGhpcy5uYUVkaXRvckFkanVzdCA9IHRoaXMuYmluZGVyLmJpbmRFdmVudChlZGl0b3IsICdhZGp1c3QnKTtcbiAgICB0aGlzLm5hRWRpdG9yRW5kID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KGVkaXRvciwgJ2VuZCcpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vcy5kZXN0cm95KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgZmlsdGVyID0gQ2hhbmdlRmlsdGVyLm9mKGNoYW5nZXMpO1xuICAgIGNvbnN0IHBvbHlsaW5lID0gdGhpcy5nZXQoKTtcbiAgICBpZiAoIXRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2luaXRpYWxpemluZyAuLi4nKTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgfHwgZ2V0T3B0aW9uczxBTWFwLlBvbHlsaW5lLk9wdGlvbnM+KHRoaXMsIFBvbHlsaW5lT3B0aW9ucyk7XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ29wdGlvbnM6Jywgb3B0aW9ucyk7XG4gICAgICB0aGlzLm9zLmNyZWF0ZShvcHRpb25zKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLm5hUmVhZHkuZW1pdChtKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAncG9seWxpbmUgaXMgcmVhZHkuJyk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgemlwKGZpbHRlci5oYXM8QU1hcC5Mb2NhdGlvblZhbHVlW10+KCdwYXRoJyksIHBvbHlsaW5lKS5zdWJzY3JpYmUoKFt2LCBwXSkgPT4gcC5zZXRQYXRoKHYpKTtcbiAgICAgIHppcChmaWx0ZXIuaGFzPEFNYXAuUG9seWxpbmUuT3B0aW9ucz4oJ29wdGlvbnMnKSwgcG9seWxpbmUpLnN1YnNjcmliZSgoW3YsIHBdKSA9PlxuICAgICAgICBwLnNldE9wdGlvbnModiB8fCB7fSksXG4gICAgICApO1xuICAgICAgemlwKGZpbHRlci5oYXM8YW55PignZXh0RGF0YScpLCBwb2x5bGluZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+IHAuc2V0RXh0RGF0YSh2KSk7XG4gICAgfVxuXG4gICAgemlwKGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2hpZGRlbicpLCBwb2x5bGluZSkuc3Vic2NyaWJlKChbdiwgcF0pID0+ICh2ID8gcC5oaWRlKCkgOiBwLnNob3coKSkpO1xuICAgIGZpbHRlci5oYXM8Ym9vbGVhbj4oJ2VkaXRvcicpLnN1YnNjcmliZSh2ID0+IHRoaXMub3MudG9nZ2xlRWRpdG9yKHYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blt7LliJvlu7rnmoQgQU1hcC5Qb2x5bGluZSDlr7nosaFcbiAgICovXG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcy5nZXQoKTtcbiAgfVxufVxuIl19