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