ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
183 lines • 12 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: directives/amap-rectangle/amap-rectangle.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 = 'AmapRectangle';
export class AmapRectangleService {
/**
* @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.rectangle$ = new ReplaySubject(1);
this.editor$ = new ReplaySubject(1);
}
/**
* 获取矩形
* @return {?}
*/
get() {
return this.rectangle$.asObservable();
}
/**
* 创建矩形 AMap.Rectangle
* @param {?} options 选项
* @return {?}
*/
create(options) {
return this.amaps.get().pipe(map((/**
* @param {?} m
* @return {?}
*/
m => {
options.map = m;
this.rectangle = this.ngZone.runOutsideAngular((/**
* @return {?}
*/
() => new AMap.Rectangle(options)));
this.logger.d(TAG, 'new Rectangle created.');
this.rectangle$.next(this.rectangle);
this.rectangle$.complete();
return this.rectangle;
})));
}
/**
* 销毁矩形
* @return {?}
*/
destroy() {
this.get().subscribe((/**
* @param {?} m
* @return {?}
*/
m => {
m.setMap(null);
this.logger.d(TAG, 'Rectangle destroyed.');
this.rectangle = null;
}));
}
/**
* @return {?}
*/
getEditor() {
// plugin is loading:
return this.editor$.asObservable();
}
/**
* 加载编辑插件
* @return {?}
*/
loadEditor() {
return this.plugins.load('AMap.RectangleEditor');
}
/**
* 创建编辑器
* @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.RectangleEditor(m, p)));
this.logger.d(TAG, 'new RectangleEditor created.');
this.editor$.next(this.editor);
this.editor$.complete();
return this.editor;
})));
}
/**
* 开关编辑器
* @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();
}
}
}
}
AmapRectangleService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AmapRectangleService.ctorParameters = () => [
{ type: AMapService },
{ type: LoggerService },
{ type: NgZone },
{ type: PluginLoaderService }
];
if (false) {
/**
* @type {?}
* @private
*/
AmapRectangleService.prototype.rectangle;
/**
* @type {?}
* @private
*/
AmapRectangleService.prototype.rectangle$;
/**
* @type {?}
* @private
*/
AmapRectangleService.prototype.editor;
/**
* @type {?}
* @private
*/
AmapRectangleService.prototype.editor$;
/**
* @type {?}
* @private
*/
AmapRectangleService.prototype.amaps;
/**
* @type {?}
* @private
*/
AmapRectangleService.prototype.logger;
/**
* @type {?}
* @private
*/
AmapRectangleService.prototype.ngZone;
/**
* @type {?}
* @private
*/
AmapRectangleService.prototype.plugins;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1yZWN0YW5nbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbWFwLyIsInNvdXJjZXMiOlsiZGlyZWN0aXZlcy9hbWFwLXJlY3RhbmdsZS9hbWFwLXJlY3RhbmdsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztNQUluRSxHQUFHLEdBQUcsZUFBZTtBQUczQixNQUFNLE9BQU8sb0JBQW9COzs7Ozs7O0lBTS9CLFlBQ1UsS0FBa0IsRUFDbEIsTUFBcUIsRUFDckIsTUFBYyxFQUNkLE9BQTRCO1FBSDVCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFSOUIsZUFBVSxHQUFHLElBQUksYUFBYSxDQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXZDLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBTSxDQUFDLENBQUMsQ0FBQztJQU96QyxDQUFDOzs7OztJQUtKLEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7Ozs7O0lBTUQsTUFBTSxDQUFDLE9BQStCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVB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bEIsbUJBQW1COzs7Ozs7O0lBUTFCLHlDQUF1Qjs7Ozs7SUFDdkIsMENBQStDOzs7OztJQUMvQyxzQ0FBb0I7Ozs7O0lBQ3BCLHVDQUE0Qzs7Ozs7SUFHMUMscUNBQTBCOzs7OztJQUMxQixzQ0FBNkI7Ozs7O0lBQzdCLHNDQUFzQjs7Ozs7SUFDdEIsdUNBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwVG8gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBTWFwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGx1Z2luTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbHVnaW4tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0dGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9pbnRlcmZhY2VzJztcbmRlY2xhcmUgY29uc3QgQU1hcDogYW55O1xuXG5jb25zdCBUQUcgPSAnQW1hcFJlY3RhbmdsZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbWFwUmVjdGFuZ2xlU2VydmljZSBpbXBsZW1lbnRzIEdldHRlcjxBTWFwLlJlY3RhbmdsZT4ge1xuICBwcml2YXRlIHJlY3RhbmdsZTogYW55O1xuICBwcml2YXRlIHJlY3RhbmdsZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuICBwcml2YXRlIGVkaXRvcjogYW55O1xuICBwcml2YXRlIGVkaXRvciQgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW1hcHM6IEFNYXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBwbHVnaW5zOiBQbHVnaW5Mb2FkZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIOiOt+WPluefqeW9olxuICAgKi9cbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLnJlY3RhbmdsZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu655+p5b2iIEFNYXAuUmVjdGFuZ2xlXG4gICAqIEBwYXJhbSBvcHRpb25zIOmAiemhuVxuICAgKi9cbiAgY3JlYXRlKG9wdGlvbnM6IEFNYXAuUmVjdGFuZ2xlLk9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5hbWFwcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKG0gPT4ge1xuICAgICAgICBvcHRpb25zLm1hcCA9IG07XG4gICAgICAgIHRoaXMucmVjdGFuZ2xlID0gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gbmV3IEFNYXAuUmVjdGFuZ2xlKG9wdGlvbnMpKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICduZXcgUmVjdGFuZ2xlIGNyZWF0ZWQuJyk7XG4gICAgICAgIHRoaXMucmVjdGFuZ2xlJC5uZXh0KHRoaXMucmVjdGFuZ2xlKTtcbiAgICAgICAgdGhpcy5yZWN0YW5nbGUkLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlY3RhbmdsZTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog6ZSA5q+B55+p5b2iXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZ2V0KCkuc3Vic2NyaWJlKG0gPT4ge1xuICAgICAgbS5zZXRNYXAobnVsbCk7XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ1JlY3RhbmdsZSBkZXN0cm95ZWQuJyk7XG4gICAgICB0aGlzLnJlY3RhbmdsZSA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBnZXRFZGl0b3IoKSB7XG4gICAgLy8gcGx1Z2luIGlzIGxvYWRpbmc6XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliqDovb3nvJbovpHmj5Lku7ZcbiAgICovXG4gIGxvYWRFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2lucy5sb2FkKCdBTWFwLlJlY3RhbmdsZUVkaXRvcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWIm+W7uue8lui+keWZqFxuICAgKi9cbiAgY3JlYXRlRWRpdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmxvYWRFZGl0b3IoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwVG8oemlwKHRoaXMuYW1hcHMuZ2V0KCksIHRoaXMuZ2V0KCkpKSxcbiAgICAgIG1hcCgoW20sIHBdKSA9PiB7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gbmV3IEFNYXAuUmVjdGFuZ2xlRWRpdG9yKG0sIHApKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICduZXcgUmVjdGFuZ2xlRWRpdG9yIGNyZWF0ZWQuJyk7XG4gICAgICAgIHRoaXMuZWRpdG9yJC5uZXh0KHRoaXMuZWRpdG9yKTtcbiAgICAgICAgdGhpcy5lZGl0b3IkLmNvbXBsZXRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvcjtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog5byA5YWz57yW6L6R5ZmoXG4gICAqIEBwYXJhbSB2IOW8gOWFs+mAiemhuVxuICAgKi9cbiAgdG9nZ2xlRWRpdG9yKHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodiAmJiAhdGhpcy5lZGl0b3IpIHtcbiAgICAgIHRoaXMuY3JlYXRlRWRpdG9yKCkuc3Vic2NyaWJlKGVkaXRvciA9PiBlZGl0b3Iub3BlbigpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcbiAgICAgIGlmICh2KSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=