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]

284 lines 18.7 kB
/** * @fileoverview added by tsickle * Generated from: directives/amap-tool-bar/amap-tool-bar.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 { AmapToolBarService } from './amap-tool-bar.service'; import { LoggerService } from '../../shared/logger/logger.service'; import { EventBinderService } from '../../shared/event-binder.service'; import { getOptions, ChangeFilter } from '../../utils'; import { PixelService } from '../../shared/pixel.service'; import { AMapService } from '../../shared/amap.service'; /** @type {?} */ const TAG = 'amap-tool-bar'; /** @type {?} */ const ToolBarOptions = [ 'offset', 'position', 'ruler', 'noIpLocate', 'locate', 'liteStyle', 'direction', 'autoPosition', 'locationMarker', 'useNative', ]; export class AmapToolBarDirective { /** * @param {?} os * @param {?} binder * @param {?} amaps * @param {?} pixels * @param {?} logger * @param {?} ngZone */ constructor(os, binder, amaps, pixels, logger, ngZone) { this.os = os; this.binder = binder; this.amaps = amaps; this.pixels = pixels; this.logger = logger; this.ngZone = ngZone; /** * 额外: 是否隐藏 */ this.hidden = false; // amap-tool-bar events: this.naReady = new EventEmitter(); this.inited = false; /** @type {?} */ const target = this.os.get(); this.naShow = this.binder.bindEvent(target, 'show'); this.naHide = this.binder.bindEvent(target, 'hide'); this.naLocation = this.binder.bindEvent(target, 'location'); this.naZoomChanged = this.binder.bindEvent(target, 'zoomchanged'); } /** * @return {?} */ ngOnDestroy() { this.os.destroy(); } /** * @return {?} */ ngOnInit() { this.amaps.get().subscribe((/** * @return {?} */ () => { this.logger.d(TAG, 'initializing ...'); /** @type {?} */ const options = getOptions(this, ToolBarOptions); if (this.offset) { options.offset = this.pixels.create(this.offset); } 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, 'toolbar is ready.'); })); this.inited = true; this.get().subscribe((/** * @param {?} m * @return {?} */ m => { this.hidden ? m.hide() : m.show(); })); })); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { /** @type {?} */ const filter = ChangeFilter.of(changes); /** @type {?} */ const toolbar = this.get(); if (!this.inited) { return; } zip(filter.notEmpty('offset'), toolbar).subscribe((/** * @param {?} __0 * @return {?} */ ([v, m]) => m.setOffset(this.pixels.create(v)))); zip(filter.has('hidden'), toolbar).subscribe((/** * @param {?} __0 * @return {?} */ ([v, m]) => (v ? m.hide() : m.show()))); } /** * 获取已创建的 AMap.ToolBar 对象 * @return {?} */ get() { return this.os.get(); } /** * @return {?} */ doLocation() { this.os.get().subscribe((/** * @param {?} toolbar * @return {?} */ toolbar => { toolbar.doLocation(); })); } } AmapToolBarDirective.decorators = [ { type: Directive, args: [{ selector: 'amap-tool-bar', exportAs: 'tool-bar', providers: [AmapToolBarService], },] } ]; /** @nocollapse */ AmapToolBarDirective.ctorParameters = () => [ { type: AmapToolBarService }, { type: EventBinderService }, { type: AMapService }, { type: PixelService }, { type: LoggerService }, { type: NgZone } ]; AmapToolBarDirective.propDecorators = { offset: [{ type: Input }], position: [{ type: Input }], ruler: [{ type: Input }], noIpLocate: [{ type: Input }], locate: [{ type: Input }], liteStyle: [{ type: Input }], direction: [{ type: Input }], autoPosition: [{ type: Input }], locationMarker: [{ type: Input }], useNative: [{ type: Input }], hidden: [{ type: Input }], naReady: [{ type: Output }], naShow: [{ type: Output }], naHide: [{ type: Output }], naLocation: [{ type: Output }], naZoomChanged: [{ type: Output }] }; if (false) { /** * 相对于地图容器左上角的偏移量 * @type {?} */ AmapToolBarDirective.prototype.offset; /** * 控件停靠位置 * LT: 左上角 * RT: 右上角 * LB: 左下角 * RB: 右下角 * @type {?} */ AmapToolBarDirective.prototype.position; /** * 标尺键盘是否可见 * @type {?} */ AmapToolBarDirective.prototype.ruler; /** * 定位失败后,是否开启 IP 定位 * @type {?} */ AmapToolBarDirective.prototype.noIpLocate; /** * 是否显示定位按钮 * @type {?} */ AmapToolBarDirective.prototype.locate; /** * 是否使用精简模式 * @type {?} */ AmapToolBarDirective.prototype.liteStyle; /** * 方向键盘是否可见 * @type {?} */ AmapToolBarDirective.prototype.direction; /** * 是否自动定位,即地图初始化加载完成后,是否自动定位的用户所在地,仅在支持 HTML5 的浏览器中有效 * @type {?} */ AmapToolBarDirective.prototype.autoPosition; /** * 自定义定位图标,值为 Marker 对象 * @type {?} */ AmapToolBarDirective.prototype.locationMarker; /** * 是否使用高德定位 SDK 用来辅助优化定位效果 * @type {?} */ AmapToolBarDirective.prototype.useNative; /** * 额外: 是否隐藏 * @type {?} */ AmapToolBarDirective.prototype.hidden; /** @type {?} */ AmapToolBarDirective.prototype.naReady; /** @type {?} */ AmapToolBarDirective.prototype.naShow; /** @type {?} */ AmapToolBarDirective.prototype.naHide; /** @type {?} */ AmapToolBarDirective.prototype.naLocation; /** @type {?} */ AmapToolBarDirective.prototype.naZoomChanged; /** * @type {?} * @private */ AmapToolBarDirective.prototype.inited; /** * @type {?} * @protected */ AmapToolBarDirective.prototype.os; /** * @type {?} * @protected */ AmapToolBarDirective.prototype.binder; /** * @type {?} * @private */ AmapToolBarDirective.prototype.amaps; /** * @type {?} * @private */ AmapToolBarDirective.prototype.pixels; /** * @type {?} * @private */ AmapToolBarDirective.prototype.logger; /** * @type {?} * @private */ AmapToolBarDirective.prototype.ngZone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC10b29sLWJhci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvYW1hcC10b29sLWJhci9hbWFwLXRvb2wtYmFyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLE1BQU0sRUFDTixZQUFZLEVBR1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLGtCQUFrQixFQUFlLE1BQU0seUJBQXlCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O01BRWxELEdBQUcsR0FBRyxlQUFlOztNQUNyQixjQUFjLEdBQUc7SUFDckIsUUFBUTtJQUNSLFVBQVU7SUFDVixPQUFPO0lBQ1AsWUFBWTtJQUNaLFFBQVE7SUFDUixXQUFXO0lBQ1gsV0FBVztJQUNYLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsV0FBVztDQUNaO0FBT0QsTUFBTSxPQUFPLG9CQUFvQjs7Ozs7Ozs7O0lBNEQvQixZQUNZLEVBQXNCLEVBQ3RCLE1BQTBCLEVBQzVCLEtBQWtCLEVBQ2xCLE1BQW9CLEVBQ3BCLE1BQXFCLEVBQ3JCLE1BQWM7UUFMWixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFhO1FB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eEMscUNBQXdCOzs7OztJQUl4QiwwQ0FBNkI7Ozs7O0lBSTdCLHNDQUF5Qjs7Ozs7SUFJekIseUNBQTRCOzs7OztJQUk1Qix5Q0FBNEI7Ozs7O0lBSTVCLDRDQUErQjs7Ozs7SUFJL0IsOENBQXFDOzs7OztJQUlyQyx5Q0FBNEI7Ozs7O0lBSTVCLHNDQUF3Qjs7SUFHeEIsdUNBQXVDOztJQUN2QyxzQ0FBb0M7O0lBQ3BDLHNDQUFvQzs7SUFDcEMsMENBQXdDOztJQUN4Qyw2Q0FBMkM7Ozs7O0lBRTNDLHNDQUF1Qjs7Ozs7SUFHckIsa0NBQWdDOzs7OztJQUNoQyxzQ0FBb0M7Ozs7O0lBQ3BDLHFDQUEwQjs7Ozs7SUFDMUIsc0NBQTRCOzs7OztJQUM1QixzQ0FBNkI7Ozs7O0lBQzdCLHNDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbWFwVG9vbEJhclNlcnZpY2UsIEFNYXBUb29sQmFyIH0gZnJvbSAnLi9hbWFwLXRvb2wtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXZlbnRCaW5kZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2V2ZW50LWJpbmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGdldE9wdGlvbnMsIENoYW5nZUZpbHRlciB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IElQaXhlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGl4ZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3BpeGVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQU1hcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvYW1hcC5zZXJ2aWNlJztcblxuY29uc3QgVEFHID0gJ2FtYXAtdG9vbC1iYXInO1xuY29uc3QgVG9vbEJhck9wdGlvbnMgPSBbXG4gICdvZmZzZXQnLFxuICAncG9zaXRpb24nLFxuICAncnVsZXInLFxuICAnbm9JcExvY2F0ZScsXG4gICdsb2NhdGUnLFxuICAnbGl0ZVN0eWxlJyxcbiAgJ2RpcmVjdGlvbicsXG4gICdhdXRvUG9zaXRpb24nLFxuICAnbG9jYXRpb25NYXJrZXInLFxuICAndXNlTmF0aXZlJyxcbl07XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2FtYXAtdG9vbC1iYXInLFxuICBleHBvcnRBczogJ3Rvb2wtYmFyJyxcbiAgcHJvdmlkZXJzOiBbQW1hcFRvb2xCYXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQW1hcFRvb2xCYXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLy8gLS0tLSBPcHRpb25zIC0tLS1cbiAgLyoqXG4gICAqIOebuOWvueS6juWcsOWbvuWuueWZqOW3puS4iuinkueahOWBj+enu+mHj1xuICAgKi9cbiAgQElucHV0KCkgb2Zmc2V0OiBBTWFwLlBpeGVsIHwgSVBpeGVsO1xuICAvKipcbiAgICog5o6n5Lu25YGc6Z2g5L2N572uXG4gICAqIExUOiDlt6bkuIrop5JcbiAgICogUlQ6IOWPs+S4iuinklxuICAgKiBMQjog5bem5LiL6KeSXG4gICAqIFJCOiDlj7PkuIvop5JcbiAgICovXG4gIEBJbnB1dCgpIHBvc2l0aW9uOiBBTWFwVG9vbEJhci5Qb3NpdGlvbjtcbiAgLyoqXG4gICAqIOagh+WwuumUruebmOaYr+WQpuWPr+ingVxuICAgKi9cbiAgQElucHV0KCkgcnVsZXI6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDlrprkvY3lpLHotKXlkI7vvIzmmK/lkKblvIDlkK8gSVAg5a6a5L2NXG4gICAqL1xuICBASW5wdXQoKSBub0lwTG9jYXRlOiBib29sZWFuO1xuICAvKipcbiAgICog5piv5ZCm5pi+56S65a6a5L2N5oyJ6ZKuXG4gICAqL1xuICBASW5wdXQoKSBsb2NhdGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmmK/lkKbkvb/nlKjnsr7nroDmqKHlvI9cbiAgICovXG4gIEBJbnB1dCgpIGxpdGVTdHlsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOaWueWQkemUruebmOaYr+WQpuWPr+ingVxuICAgKi9cbiAgQElucHV0KCkgZGlyZWN0aW9uOiBib29sZWFuO1xuICAvKipcbiAgICog5piv5ZCm6Ieq5Yqo5a6a5L2N77yM5Y2z5Zyw5Zu+5Yid5aeL5YyW5Yqg6L295a6M5oiQ5ZCO77yM5piv5ZCm6Ieq5Yqo5a6a5L2N55qE55So5oi35omA5Zyo5Zyw77yM5LuF5Zyo5pSv5oyBIEhUTUw1IOeahOa1j+iniOWZqOS4reacieaViFxuICAgKi9cbiAgQElucHV0KCkgYXV0b1Bvc2l0aW9uOiBib29sZWFuO1xuICAvKipcbiAgICog6Ieq5a6a5LmJ5a6a5L2N5Zu+5qCH77yM5YC85Li6IE1hcmtlciDlr7nosaFcbiAgICovXG4gIEBJbnB1dCgpIGxvY2F0aW9uTWFya2VyOiBBTWFwLk1hcmtlcjtcbiAgLyoqXG4gICAqIOaYr+WQpuS9v+eUqOmrmOW+t+WumuS9jSBTREsg55So5p2l6L6F5Yqp5LyY5YyW5a6a5L2N5pWI5p6cXG4gICAqL1xuICBASW5wdXQoKSB1c2VOYXRpdmU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDpop3lpJY6IOaYr+WQpumakOiXj1xuICAgKi9cbiAgQElucHV0KCkgaGlkZGVuID0gZmFsc2U7XG5cbiAgLy8gYW1hcC10b29sLWJhciBldmVudHM6XG4gIEBPdXRwdXQoKSBuYVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbmFTaG93OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hSGlkZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoKSBuYUxvY2F0aW9uOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hWm9vbUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIHByaXZhdGUgaW5pdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG9zOiBBbWFwVG9vbEJhclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGJpbmRlcjogRXZlbnRCaW5kZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW1hcHM6IEFNYXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGl4ZWxzOiBQaXhlbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5vcy5nZXQoKTtcbiAgICB0aGlzLm5hU2hvdyA9IHRoaXMuYmluZGVyLmJpbmRFdmVudCh0YXJnZXQsICdzaG93Jyk7XG4gICAgdGhpcy5uYUhpZGUgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQodGFyZ2V0LCAnaGlkZScpO1xuICAgIHRoaXMubmFMb2NhdGlvbiA9IHRoaXMuYmluZGVyLmJpbmRFdmVudCh0YXJnZXQsICdsb2NhdGlvbicpO1xuICAgIHRoaXMubmFab29tQ2hhbmdlZCA9IHRoaXMuYmluZGVyLmJpbmRFdmVudCh0YXJnZXQsICd6b29tY2hhbmdlZCcpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vcy5kZXN0cm95KCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFtYXBzLmdldCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2luaXRpYWxpemluZyAuLi4nKTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRPcHRpb25zPEFNYXBUb29sQmFyLk9wdGlvbnM+KHRoaXMsIFRvb2xCYXJPcHRpb25zKTtcbiAgICAgIGlmICh0aGlzLm9mZnNldCkge1xuICAgICAgICBvcHRpb25zLm9mZnNldCA9IHRoaXMucGl4ZWxzLmNyZWF0ZSh0aGlzLm9mZnNldCk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ29wdGlvbnM6Jywgb3B0aW9ucyk7XG4gICAgICB0aGlzLm9zLmNyZWF0ZShvcHRpb25zKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLm5hUmVhZHkuZW1pdChtKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAndG9vbGJhciBpcyByZWFkeS4nKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5nZXQoKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICAgIHRoaXMuaGlkZGVuID8gbS5oaWRlKCkgOiBtLnNob3coKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IGZpbHRlciA9IENoYW5nZUZpbHRlci5vZihjaGFuZ2VzKTtcbiAgICBjb25zdCB0b29sYmFyID0gdGhpcy5nZXQoKTtcbiAgICBpZiAoIXRoaXMuaW5pdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHppcChmaWx0ZXIubm90RW1wdHk8QU1hcC5QaXhlbCB8IElQaXhlbD4oJ29mZnNldCcpLCB0b29sYmFyKS5zdWJzY3JpYmUoKFt2LCBtXSkgPT5cbiAgICAgIG0uc2V0T2Zmc2V0KHRoaXMucGl4ZWxzLmNyZWF0ZSh2KSksXG4gICAgKTtcbiAgICB6aXAoZmlsdGVyLmhhczxib29sZWFuPignaGlkZGVuJyksIHRvb2xiYXIpLnN1YnNjcmliZSgoW3YsIG1dKSA9PiAodiA/IG0uaGlkZSgpIDogbS5zaG93KCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blt7LliJvlu7rnmoQgQU1hcC5Ub29sQmFyIOWvueixoVxuICAgKi9cbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLm9zLmdldCgpO1xuICB9XG5cbiAgZG9Mb2NhdGlvbigpIHtcbiAgICB0aGlzLm9zLmdldCgpLnN1YnNjcmliZSh0b29sYmFyID0+IHtcbiAgICAgIHRvb2xiYXIuZG9Mb2NhdGlvbigpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=