ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
183 lines • 11.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: directives/amap-polyline/amap-polyline.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 = 'AmapPolyline';
export class AmapPolylineService {
/**
* @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.polyline$ = new ReplaySubject(1);
this.editor$ = new ReplaySubject(1);
}
/**
* 获取折线
* @return {?}
*/
get() {
return this.polyline$.asObservable();
}
/**
* 创建折线 AMap.Polyline
* @param {?} options 选项
* @return {?}
*/
create(options) {
return this.amaps.get().pipe(map((/**
* @param {?} m
* @return {?}
*/
m => {
options.map = m;
this.polyline = this.ngZone.runOutsideAngular((/**
* @return {?}
*/
() => new AMap.Polyline(options)));
this.logger.d(TAG, 'new Polyline created.');
this.polyline$.next(this.polyline);
this.polyline$.complete();
return this.polyline;
})));
}
/**
* 销毁折线
* @return {?}
*/
destroy() {
this.get().subscribe((/**
* @param {?} m
* @return {?}
*/
m => {
m.setMap(null);
this.logger.d(TAG, 'Polyline destroyed.');
this.polyline = null;
}));
}
/**
* @return {?}
*/
getEditor() {
// plugin is loading:
return this.editor$.asObservable();
}
/**
* 加载编辑插件
* @return {?}
*/
loadEditor() {
return this.plugins.load('AMap.PolyEditor');
}
/**
* 创建编辑器
* @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.PolyEditor(m, p)));
this.logger.d(TAG, 'new PolyEditor 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();
}
}
}
}
AmapPolylineService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AmapPolylineService.ctorParameters = () => [
{ type: AMapService },
{ type: LoggerService },
{ type: NgZone },
{ type: PluginLoaderService }
];
if (false) {
/**
* @type {?}
* @private
*/
AmapPolylineService.prototype.polyline;
/**
* @type {?}
* @private
*/
AmapPolylineService.prototype.polyline$;
/**
* @type {?}
* @private
*/
AmapPolylineService.prototype.editor;
/**
* @type {?}
* @private
*/
AmapPolylineService.prototype.editor$;
/**
* @type {?}
* @private
*/
AmapPolylineService.prototype.amaps;
/**
* @type {?}
* @private
*/
AmapPolylineService.prototype.logger;
/**
* @type {?}
* @private
*/
AmapPolylineService.prototype.ngZone;
/**
* @type {?}
* @private
*/
AmapPolylineService.prototype.plugins;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1wb2x5bGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFtYXAvIiwic291cmNlcyI6WyJkaXJlY3RpdmVzL2FtYXAtcG9seWxpbmUvYW1hcC1wb2x5bGluZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztNQUluRSxHQUFHLEdBQUcsY0FBYztBQUcxQixNQUFNLE9BQU8sbUJBQW1COzs7Ozs7O0lBTTlCLFlBQ1UsS0FBa0IsRUFDbEIsTUFBcUIsRUFDckIsTUFBYyxFQUNkLE9BQTRCO1FBSDVCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFSOUIsY0FBUyxHQUFHLElBQUksYUFBYSxDQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXRDLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBTSxDQUFDLENBQUMsQ0FBQztJQU96QyxDQUFDOzs7OztJQUtKLEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQzs7Ozs7O0lBTUQsTUFBTSxDQUFDLE9BQThCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUs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bUJBQW1COzs7Ozs7O0lBUTFCLHVDQUFzQjs7Ozs7SUFDdEIsd0NBQThDOzs7OztJQUM5QyxxQ0FBb0I7Ozs7O0lBQ3BCLHNDQUE0Qzs7Ozs7SUFHMUMsb0NBQTBCOzs7OztJQUMxQixxQ0FBNkI7Ozs7O0lBQzdCLHFDQUFzQjs7Ozs7SUFDdEIsc0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwVG8gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBTWFwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGx1Z2luTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbHVnaW4tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0dGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9pbnRlcmZhY2VzJztcbmRlY2xhcmUgY29uc3QgQU1hcDogYW55O1xuXG5jb25zdCBUQUcgPSAnQW1hcFBvbHlsaW5lJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFtYXBQb2x5bGluZVNlcnZpY2UgaW1wbGVtZW50cyBHZXR0ZXI8QU1hcC5Qb2x5bGluZT4ge1xuICBwcml2YXRlIHBvbHlsaW5lOiBhbnk7XG4gIHByaXZhdGUgcG9seWxpbmUkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBlZGl0b3IkID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFtYXBzOiBBTWFwU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcGx1Z2luczogUGx1Z2luTG9hZGVyU2VydmljZSxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiDojrflj5bmipjnur9cbiAgICovXG4gIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5wb2x5bGluZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65oqY57q/IEFNYXAuUG9seWxpbmVcbiAgICogQHBhcmFtIG9wdGlvbnMg6YCJ6aG5XG4gICAqL1xuICBjcmVhdGUob3B0aW9uczogQU1hcC5Qb2x5bGluZS5PcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuYW1hcHMuZ2V0KCkucGlwZShcbiAgICAgIG1hcChtID0+IHtcbiAgICAgICAgb3B0aW9ucy5tYXAgPSBtO1xuICAgICAgICB0aGlzLnBvbHlsaW5lID0gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gbmV3IEFNYXAuUG9seWxpbmUob3B0aW9ucykpO1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ25ldyBQb2x5bGluZSBjcmVhdGVkLicpO1xuICAgICAgICB0aGlzLnBvbHlsaW5lJC5uZXh0KHRoaXMucG9seWxpbmUpO1xuICAgICAgICB0aGlzLnBvbHlsaW5lJC5jb21wbGV0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5wb2x5bGluZTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog6ZSA5q+B5oqY57q/XG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZ2V0KCkuc3Vic2NyaWJlKG0gPT4ge1xuICAgICAgbS5zZXRNYXAobnVsbCk7XG4gICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ1BvbHlsaW5lIGRlc3Ryb3llZC4nKTtcbiAgICAgIHRoaXMucG9seWxpbmUgPSBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RWRpdG9yKCkge1xuICAgIC8vIHBsdWdpbiBpcyBsb2FkaW5nOlxuICAgIHJldHVybiB0aGlzLmVkaXRvciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L2957yW6L6R5o+S5Lu2XG4gICAqL1xuICBsb2FkRWRpdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnBsdWdpbnMubG9hZCgnQU1hcC5Qb2x5RWRpdG9yJyk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu657yW6L6R5ZmoXG4gICAqL1xuICBjcmVhdGVFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZEVkaXRvcigpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXBUbyh6aXAodGhpcy5hbWFwcy5nZXQoKSwgdGhpcy5nZXQoKSkpLFxuICAgICAgbWFwKChbbSwgcF0pID0+IHtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgQU1hcC5Qb2x5RWRpdG9yKG0sIHApKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZChUQUcsICduZXcgUG9seUVkaXRvciBjcmVhdGVkLicpO1xuICAgICAgICB0aGlzLmVkaXRvciQubmV4dCh0aGlzLmVkaXRvcik7XG4gICAgICAgIHRoaXMuZWRpdG9yJC5jb21wbGV0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0b3I7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOW8gOWFs+e8lui+keWZqFxuICAgKiBAcGFyYW0gdiDlvIDlhbPpgInpoblcbiAgICovXG4gIHRvZ2dsZUVkaXRvcih2OiBib29sZWFuKSB7XG4gICAgaWYgKHYgJiYgIXRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmNyZWF0ZUVkaXRvcigpLnN1YnNjcmliZShlZGl0b3IgPT4gZWRpdG9yLm9wZW4oKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICBpZiAodikge1xuICAgICAgICB0aGlzLmVkaXRvci5vcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVkaXRvci5jbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19