ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
179 lines • 12.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: directives/amap-marker-clusterer/amap-marker-clusterer.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 } from 'rxjs/operators';
import { AMapService } from '../../shared/amap.service';
import { PluginLoaderService } from '../../shared/plugin-loader.service';
import { LoggerService } from '../../shared/logger/logger.service';
export var AMapMarkerClusterer;
(function (AMapMarkerClusterer) {
/**
* @record
*/
function StyleObject() { }
AMapMarkerClusterer.StyleObject = StyleObject;
if (false) {
/** @type {?|undefined} */
StyleObject.prototype.url;
/** @type {?|undefined} */
StyleObject.prototype.size;
/** @type {?|undefined} */
StyleObject.prototype.offset;
/** @type {?|undefined} */
StyleObject.prototype.imageOffset;
/** @type {?|undefined} */
StyleObject.prototype.textColor;
/** @type {?|undefined} */
StyleObject.prototype.textSize;
}
/**
* @record
*/
function Options() { }
AMapMarkerClusterer.Options = Options;
if (false) {
/**
* 聚合计算时网格的像素大小,默认60
* @type {?|undefined}
*/
Options.prototype.gridSize;
/**
* 聚合的最小数量。默认值为2,即小于2个点则不能成为一个聚合
* @type {?|undefined}
*/
Options.prototype.minClusterSize;
/**
* 最大的聚合级别,大于该级别就不进行相应的聚合。默认值为18
* @type {?|undefined}
*/
Options.prototype.maxZoom;
/**
* 聚合点的图标位置是否是所有聚合内点的中心点。默认为否
* @type {?|undefined}
*/
Options.prototype.averageCenter;
/**
* 指定聚合后的点标记的图标样式,可缺省,缺省时为默认样式
* @type {?|undefined}
*/
Options.prototype.styles;
/**
* 该方法用来实现聚合点的自定义绘制
* @type {?|undefined}
*/
Options.prototype.renderClusterMarker;
/**
* 点击聚合点时,是否散开,默认值为:true
* @type {?|undefined}
*/
Options.prototype.zoomOnClick;
}
})(AMapMarkerClusterer || (AMapMarkerClusterer = {}));
/** @type {?} */
const TAG = 'AmapMarkerCluster';
export class AmapMarkerClustererService {
/**
* @param {?} amaps
* @param {?} plugins
* @param {?} logger
* @param {?} ngZone
*/
constructor(amaps, plugins, logger, ngZone) {
this.amaps = amaps;
this.plugins = plugins;
this.logger = logger;
this.ngZone = ngZone;
this.markerClusterer$ = new ReplaySubject(1);
}
/**
* 获取点聚合
* @return {?}
*/
get() {
return this.markerClusterer$.asObservable();
}
/**
* 创建点聚合 AMap.MarkerClusterer
* @param {?} options 选项
* @return {?}
*/
create(options) {
return zip(this.amaps.get(), this.plugins.load('AMap.MarkerClusterer')).pipe(map((/**
* @param {?} __0
* @return {?}
*/
([m]) => {
this.markerClusterer = this.ngZone.runOutsideAngular((/**
* @return {?}
*/
() => new AMap.MarkerClusterer(m, [], options)));
this.logger.d(TAG, 'new markerClusterer created.');
this.markerClusterer$.next(this.markerClusterer);
this.markerClusterer$.complete();
return this.markerClusterer;
})));
}
/**
* 销毁点聚合
* @return {?}
*/
destroy() {
this.get().subscribe((/**
* @param {?} m
* @return {?}
*/
m => {
m.clearMarkers();
m.setMap(null);
this.logger.d(TAG, 'markerClusterer destroyed.');
this.markerClusterer = null;
}));
}
}
AmapMarkerClustererService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AmapMarkerClustererService.ctorParameters = () => [
{ type: AMapService },
{ type: PluginLoaderService },
{ type: LoggerService },
{ type: NgZone }
];
if (false) {
/**
* @type {?}
* @private
*/
AmapMarkerClustererService.prototype.markerClusterer;
/**
* @type {?}
* @private
*/
AmapMarkerClustererService.prototype.markerClusterer$;
/**
* @type {?}
* @private
*/
AmapMarkerClustererService.prototype.amaps;
/**
* @type {?}
* @private
*/
AmapMarkerClustererService.prototype.plugins;
/**
* @type {?}
* @private
*/
AmapMarkerClustererService.prototype.logger;
/**
* @type {?}
* @private
*/
AmapMarkerClustererService.prototype.ngZone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1tYXJrZXItY2x1c3RlcmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvYW1hcC1tYXJrZXItY2x1c3RlcmVyL2FtYXAtbWFya2VyLWNsdXN0ZXJlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFJbkUsTUFBTSxLQUFXLG1CQUFtQixDQTRDbkM7QUE1Q0QsV0FBaUIsbUJBQW1COzs7O0lBQ2xDLDBCQU9DOzs7O1FBTkMsMEJBQWE7O1FBQ2IsMkJBQWlCOztRQUNqQiw2QkFBb0I7O1FBQ3BCLGtDQUF5Qjs7UUFDekIsZ0NBQW1COztRQUNuQiwrQkFBa0I7Ozs7O0lBR3BCLHNCQWlDQzs7Ozs7OztRQTdCQywyQkFBa0I7Ozs7O1FBSWxCLGlDQUF3Qjs7Ozs7UUFJeEIsMEJBQWlCOzs7OztRQUlqQixnQ0FBd0I7Ozs7O1FBSXhCLHlCQUF1Qjs7Ozs7UUFJdkIsc0NBSVc7Ozs7O1FBSVgsOEJBQXNCOztBQUUxQixDQUFDLEVBNUNnQixtQkFBbUIsS0FBbkIsbUJBQW1CLFFBNENuQzs7TUFFSyxHQUFHLEdBQUcsbUJBQW1CO0FBRy9CLE1BQU0sT0FBTywwQkFBMEI7Ozs7Ozs7SUFJckMsWUFDVSxLQUFrQixFQUNsQixPQUE0QixFQUM1QixNQUFxQixFQUNyQixNQUFjO1FBSGQsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOaEIscUJBQWdCLEdBQUcsSUFBSSxhQUFhLENBQU0sQ0FBQyxDQUFDLENBQUM7SUFPbEQsQ0FBQzs7Ozs7SUFLSixHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7Ozs7O0lBTUQsTUFBTSxDQUFDLE9BQW9DO1FBQ3pDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDMUUsR0FBRzs7OztRQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQjs7O1lBQ2xELEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUMvQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLDhCQUE4QixDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QixDQUFDLEVBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7Ozs7SUFLRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBL0NGLFVBQVU7Ozs7WUF0REYsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixhQUFhO1lBTEQsTUFBTTs7Ozs7OztJQTJEekIscURBQTZCOzs7OztJQUM3QixzREFBcUQ7Ozs7O0lBR25ELDJDQUEwQjs7Ozs7SUFDMUIsNkNBQW9DOzs7OztJQUNwQyw0Q0FBNkI7Ozs7O0lBQzdCLDRDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBTWFwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGx1Z2luTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9wbHVnaW4tbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0dGVyIH0gZnJvbSAnLi4vLi4vYmFzZS9pbnRlcmZhY2VzJztcbmRlY2xhcmUgY29uc3QgQU1hcDogYW55O1xuXG5leHBvcnQgbmFtZXNwYWNlIEFNYXBNYXJrZXJDbHVzdGVyZXIge1xuICBleHBvcnQgaW50ZXJmYWNlIFN0eWxlT2JqZWN0IHtcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgc2l6ZT86IEFNYXAuU2l6ZTtcbiAgICBvZmZzZXQ/OiBBTWFwLlBpeGVsO1xuICAgIGltYWdlT2Zmc2V0PzogQU1hcC5QaXhlbDtcbiAgICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gICAgdGV4dFNpemU/OiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIOiBmuWQiOiuoeeul+aXtue9keagvOeahOWDj+e0oOWkp+Wwj++8jOm7mOiupDYwXG4gICAgICovXG4gICAgZ3JpZFNpemU/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICog6IGa5ZCI55qE5pyA5bCP5pWw6YeP44CC6buY6K6k5YC85Li6Mu+8jOWNs+Wwj+S6jjLkuKrngrnliJnkuI3og73miJDkuLrkuIDkuKrogZrlkIhcbiAgICAgKi9cbiAgICBtaW5DbHVzdGVyU2l6ZT86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiDmnIDlpKfnmoTogZrlkIjnuqfliKvvvIzlpKfkuo7or6XnuqfliKvlsLHkuI3ov5vooYznm7jlupTnmoTogZrlkIjjgILpu5jorqTlgLzkuLoxOFxuICAgICAqL1xuICAgIG1heFpvb20/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICog6IGa5ZCI54K555qE5Zu+5qCH5L2N572u5piv5ZCm5piv5omA5pyJ6IGa5ZCI5YaF54K555qE5Lit5b+D54K544CC6buY6K6k5Li65ZCmXG4gICAgICovXG4gICAgYXZlcmFnZUNlbnRlcj86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICog5oyH5a6a6IGa5ZCI5ZCO55qE54K55qCH6K6w55qE5Zu+5qCH5qC35byP77yM5Y+v57y655yB77yM57y655yB5pe25Li66buY6K6k5qC35byPXG4gICAgICovXG4gICAgc3R5bGVzPzogU3R5bGVPYmplY3RbXTtcbiAgICAvKipcbiAgICAgKiDor6Xmlrnms5XnlKjmnaXlrp7njrDogZrlkIjngrnnmoToh6rlrprkuYnnu5jliLZcbiAgICAgKi9cbiAgICByZW5kZXJDbHVzdGVyTWFya2VyPzogKG9iajoge1xuICAgICAgY291bnQ6IG51bWJlcjtcbiAgICAgIG1hcmtlcnM6IEFNYXAuTWFya2VyPGFueT5bXTtcbiAgICAgIG1hcmtlcjogQU1hcC5NYXJrZXI8YW55PjtcbiAgICB9KSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIOeCueWHu+iBmuWQiOeCueaXtu+8jOaYr+WQpuaVo+W8gO+8jOm7mOiupOWAvOS4uu+8mnRydWVcbiAgICAgKi9cbiAgICB6b29tT25DbGljaz86IGJvb2xlYW47XG4gIH1cbn1cblxuY29uc3QgVEFHID0gJ0FtYXBNYXJrZXJDbHVzdGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFtYXBNYXJrZXJDbHVzdGVyZXJTZXJ2aWNlIGltcGxlbWVudHMgR2V0dGVyPGFueT4ge1xuICBwcml2YXRlIG1hcmtlckNsdXN0ZXJlcjogYW55O1xuICBwcml2YXRlIG1hcmtlckNsdXN0ZXJlciQgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW1hcHM6IEFNYXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luczogUGx1Z2luTG9hZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIOiOt+WPlueCueiBmuWQiFxuICAgKi9cbiAgZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLm1hcmtlckNsdXN0ZXJlciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu654K56IGa5ZCIIEFNYXAuTWFya2VyQ2x1c3RlcmVyXG4gICAqIEBwYXJhbSBvcHRpb25zIOmAiemhuVxuICAgKi9cbiAgY3JlYXRlKG9wdGlvbnM6IEFNYXBNYXJrZXJDbHVzdGVyZXIuT3B0aW9ucykge1xuICAgIHJldHVybiB6aXAodGhpcy5hbWFwcy5nZXQoKSwgdGhpcy5wbHVnaW5zLmxvYWQoJ0FNYXAuTWFya2VyQ2x1c3RlcmVyJykpLnBpcGUoXG4gICAgICBtYXAoKFttXSkgPT4ge1xuICAgICAgICB0aGlzLm1hcmtlckNsdXN0ZXJlciA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKFxuICAgICAgICAgICgpID0+IG5ldyBBTWFwLk1hcmtlckNsdXN0ZXJlcihtLCBbXSwgb3B0aW9ucyksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnbmV3IG1hcmtlckNsdXN0ZXJlciBjcmVhdGVkLicpO1xuICAgICAgICB0aGlzLm1hcmtlckNsdXN0ZXJlciQubmV4dCh0aGlzLm1hcmtlckNsdXN0ZXJlcik7XG4gICAgICAgIHRoaXMubWFya2VyQ2x1c3RlcmVyJC5jb21wbGV0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5tYXJrZXJDbHVzdGVyZXI7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOmUgOavgeeCueiBmuWQiFxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmdldCgpLnN1YnNjcmliZShtID0+IHtcbiAgICAgIG0uY2xlYXJNYXJrZXJzKCk7XG4gICAgICBtLnNldE1hcChudWxsKTtcbiAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnbWFya2VyQ2x1c3RlcmVyIGRlc3Ryb3llZC4nKTtcbiAgICAgIHRoaXMubWFya2VyQ2x1c3RlcmVyID0gbnVsbDtcbiAgICB9KTtcbiAgfVxufVxuIl19