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]

179 lines 12.1 kB
/** * @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