@agm-extend/js-marker-clusterer
Version:
Angular Google Maps (AGM) extension for js-marker-clusterer support
141 lines • 17.5 kB
JavaScript
import * as tslib_1 from "tslib";
import { Injectable, NgZone } from '@angular/core';
import { Observable } from 'rxjs';
import 'gmaps-marker-clusterer';
import { GoogleMapsAPIWrapper, MarkerManager } from '@agm/core';
let ClusterManager = class ClusterManager extends MarkerManager {
constructor(_mapsWrapper, _zone) {
super(_mapsWrapper, _zone);
this._mapsWrapper = _mapsWrapper;
this._zone = _zone;
this._clustererInstance = new Promise((resolver) => {
this._resolver = resolver;
});
}
init(options) {
this._mapsWrapper.getNativeMap().then(map => {
const clusterer = new MarkerClusterer(map, [], options);
this._resolver(clusterer);
});
}
getClustererInstance() {
return this._clustererInstance;
}
addMarker(marker) {
const clusterPromise = this.getClustererInstance();
const markerPromise = this._mapsWrapper
.createMarker({
position: {
lat: marker.latitude,
lng: marker.longitude,
},
label: marker.label,
draggable: marker.draggable,
icon: marker.iconUrl,
opacity: marker.opacity,
visible: marker.visible,
zIndex: marker.zIndex,
title: marker.title,
clickable: marker.clickable,
}, false);
Promise
.all([clusterPromise, markerPromise])
.then(([cluster, marker]) => {
return cluster.addMarker(marker);
});
this._markers.set(marker, markerPromise);
}
deleteMarker(marker) {
const m = this._markers.get(marker);
if (m == null) {
// marker already deleted
return Promise.resolve();
}
return m.then((m) => {
this._zone.run(() => {
m.setMap(null);
this.getClustererInstance().then(cluster => {
cluster.removeMarker(m);
this._markers.delete(marker);
});
});
});
}
clearMarkers() {
return this.getClustererInstance().then(cluster => {
cluster.clearMarkers();
});
}
setGridSize(c) {
this.getClustererInstance().then(cluster => {
cluster.setGridSize(c.gridSize);
});
}
setMaxZoom(c) {
this.getClustererInstance().then(cluster => {
cluster.setMaxZoom(c.maxZoom);
});
}
setStyles(c) {
this.getClustererInstance().then(cluster => {
cluster.setStyles(c.styles);
});
}
setZoomOnClick(c) {
this.getClustererInstance().then(cluster => {
if (c.zoomOnClick !== undefined) {
cluster.zoomOnClick_ = c.zoomOnClick;
}
});
}
setAverageCenter(c) {
this.getClustererInstance().then(cluster => {
if (c.averageCenter !== undefined) {
cluster.averageCenter_ = c.averageCenter;
}
});
}
setImagePath(c) {
this.getClustererInstance().then(cluster => {
if (c.imagePath !== undefined) {
cluster.imagePath_ = c.imagePath;
}
});
}
setMinimumClusterSize(c) {
this.getClustererInstance().then(cluster => {
if (c.minimumClusterSize !== undefined) {
cluster.minimumClusterSize_ = c.minimumClusterSize;
}
});
}
setImageExtension(c) {
this.getClustererInstance().then(cluster => {
if (c.imageExtension !== undefined) {
cluster.imageExtension_ = c.imageExtension;
}
});
}
createClusterEventObservable(eventName) {
return Observable.create((observer) => {
this._zone.runOutsideAngular(() => {
this._clustererInstance.then((m) => {
m.addListener(eventName, (e) => this._zone.run(() => observer.next(e)));
});
});
});
}
setCalculator(c) {
this.getClustererInstance().then(cluster => {
if (typeof c.calculator === 'function') {
cluster.setCalculator(c.calculator);
}
});
}
};
ClusterManager = tslib_1.__decorate([
Injectable(),
tslib_1.__metadata("design:paramtypes", [GoogleMapsAPIWrapper, NgZone])
], ClusterManager);
export { ClusterManager };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFnbS1leHRlbmQvanMtbWFya2VyLWNsdXN0ZXJlci8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL21hbmFnZXJzL2NsdXN0ZXItbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBYSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRM0UsSUFBYSxjQUFjLEdBQTNCLE1BQWEsY0FBZSxTQUFRLGFBQWE7SUFJL0MsWUFBc0IsWUFBa0MsRUFBWSxLQUFhO1FBQy9FLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFEUCxpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUFBWSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBRS9FLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBMEIsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBdUI7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxrQkFBa0Is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QUFNO0dBSnRFLGNBQWMsQ0FrSjFCO1NBbEpZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCAnZ21hcHMtbWFya2VyLWNsdXN0ZXJlcic7XHJcblxyXG5pbXBvcnQgeyBBZ21NYXJrZXIsIEdvb2dsZU1hcHNBUElXcmFwcGVyLCBNYXJrZXJNYW5hZ2VyIH0gZnJvbSAnQGFnbS9jb3JlJztcclxuaW1wb3J0IHsgTWFya2VyIH0gZnJvbSAnQGFnbS9jb3JlL3NlcnZpY2VzL2dvb2dsZS1tYXBzLXR5cGVzJztcclxuaW1wb3J0IHsgQWdtTWFya2VyQ2x1c3RlciB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbWFya2VyLWNsdXN0ZXInO1xyXG5pbXBvcnQgeyBDbHVzdGVyT3B0aW9ucywgTWFya2VyQ2x1c3RlcmVySW5zdGFuY2UgfSBmcm9tICcuLi9nb29nbGUtY2x1c3RlcmVyLXR5cGVzJztcclxuXHJcbmRlY2xhcmUgdmFyIE1hcmtlckNsdXN0ZXJlcjogYW55O1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2x1c3Rlck1hbmFnZXIgZXh0ZW5kcyBNYXJrZXJNYW5hZ2VyIHtcclxuICBwcml2YXRlIF9jbHVzdGVyZXJJbnN0YW5jZTogUHJvbWlzZTxNYXJrZXJDbHVzdGVyZXJJbnN0YW5jZT47XHJcbiAgcHJpdmF0ZSBfcmVzb2x2ZXI6IEZ1bmN0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX21hcHNXcmFwcGVyOiBHb29nbGVNYXBzQVBJV3JhcHBlciwgcHJvdGVjdGVkIF96b25lOiBOZ1pvbmUpIHtcclxuICAgIHN1cGVyKF9tYXBzV3JhcHBlciwgX3pvbmUpO1xyXG4gICAgdGhpcy5fY2x1c3RlcmVySW5zdGFuY2UgPSBuZXcgUHJvbWlzZTxNYXJrZXJDbHVzdGVyZXJJbnN0YW5jZT4oKHJlc29sdmVyKSA9PiB7XHJcbiAgICAgIHRoaXMuX3Jlc29sdmVyID0gcmVzb2x2ZXI7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXQob3B0aW9uczogQ2x1c3Rlck9wdGlvbnMpOiB2b2lkIHtcclxuICAgIHRoaXMuX21hcHNXcmFwcGVyLmdldE5hdGl2ZU1hcCgpLnRoZW4obWFwID0+IHtcclxuICAgICAgY29uc3QgY2x1c3RlcmVyID0gbmV3IE1hcmtlckNsdXN0ZXJlcihtYXAsIFtdLCBvcHRpb25zKTtcclxuICAgICAgdGhpcy5fcmVzb2x2ZXIoY2x1c3RlcmVyKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2x1c3RlcmVySW5zdGFuY2UoKTogUHJvbWlzZTxNYXJrZXJDbHVzdGVyZXJJbnN0YW5jZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NsdXN0ZXJlckluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFya2VyKG1hcmtlcjogQWdtTWFya2VyKTogdm9pZCB7XHJcbiAgICBjb25zdCBjbHVzdGVyUHJvbWlzZTogUHJvbWlzZTxNYXJrZXJDbHVzdGVyZXJJbnN0YW5jZT4gPSB0aGlzLmdldENsdXN0ZXJlckluc3RhbmNlKCk7XHJcbiAgICBjb25zdCBtYXJrZXJQcm9taXNlID0gdGhpcy5fbWFwc1dyYXBwZXJcclxuICAgICAgLmNyZWF0ZU1hcmtlcih7XHJcbiAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgIGxhdDogbWFya2VyLmxhdGl0dWRlLFxyXG4gICAgICAgICAgbG5nOiBtYXJrZXIubG9uZ2l0dWRlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGFiZWw6IG1hcmtlci5sYWJlbCxcclxuICAgICAgICBkcmFnZ2FibGU6IG1hcmtlci5kcmFnZ2FibGUsXHJcbiAgICAgICAgaWNvbjogbWFya2VyLmljb25VcmwsXHJcbiAgICAgICAgb3BhY2l0eTogbWFya2VyLm9wYWNpdHksXHJcbiAgICAgICAgdmlzaWJsZTogbWFya2VyLnZpc2libGUsXHJcbiAgICAgICAgekluZGV4OiBtYXJrZXIuekluZGV4LFxyXG4gICAgICAgIHRpdGxlOiBtYXJrZXIudGl0bGUsXHJcbiAgICAgICAgY2xpY2thYmxlOiBtYXJrZXIuY2xpY2thYmxlLFxyXG4gICAgICB9LCBmYWxzZSk7XHJcblxyXG4gICAgUHJvbWlzZVxyXG4gICAgICAuYWxsKFtjbHVzdGVyUHJvbWlzZSwgbWFya2VyUHJvbWlzZV0pXHJcbiAgICAgIC50aGVuKChbY2x1c3RlciwgbWFya2VyXSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBjbHVzdGVyLmFkZE1hcmtlcihtYXJrZXIpO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuX21hcmtlcnMuc2V0KG1hcmtlciwgbWFya2VyUHJvbWlzZSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVNYXJrZXIobWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IG0gPSB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpO1xyXG4gICAgaWYgKG0gPT0gbnVsbCkge1xyXG4gICAgICAvLyBtYXJrZXIgYWxyZWFkeSBkZWxldGVkXHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtLnRoZW4oKG06IE1hcmtlcikgPT4ge1xyXG4gICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgbS5zZXRNYXAobnVsbCk7XHJcbiAgICAgICAgdGhpcy5nZXRDbHVzdGVyZXJJbnN0YW5jZSgpLnRoZW4oY2x1c3RlciA9PiB7XHJcbiAgICAgICAgICBjbHVzdGVyLnJlbW92ZU1hcmtlcihtKTtcclxuICAgICAgICAgIHRoaXMuX21hcmtlcnMuZGVsZXRlKG1hcmtlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbGVhck1hcmtlcnMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDbHVzdGVyZXJJbnN0YW5jZSgpLnRoZW4oY2x1c3RlciA9PiB7XHJcbiAgICAgIGNsdXN0ZXIuY2xlYXJNYXJrZXJzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEdyaWRTaXplKGM6IEFnbU1hcmtlckNsdXN0ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0Q2x1c3RlcmVySW5zdGFuY2UoKS50aGVuKGNsdXN0ZXIgPT4ge1xyXG4gICAgICBjbHVzdGVyLnNldEdyaWRTaXplKGMuZ3JpZFNpemUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRNYXhab29tKGM6IEFnbU1hcmtlckNsdXN0ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0Q2x1c3RlcmVySW5zdGFuY2UoKS50aGVuKGNsdXN0ZXIgPT4ge1xyXG4gICAgICBjbHVzdGVyLnNldE1heFpvb20oYy5tYXhab29tKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U3R5bGVzKGM6IEFnbU1hcmtlckNsdXN0ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0Q2x1c3RlcmVySW5zdGFuY2UoKS50aGVuKGNsdXN0ZXIgPT4ge1xyXG4gICAgICBjbHVzdGVyLnNldFN0eWxlcyhjLnN0eWxlcyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFpvb21PbkNsaWNrKGM6IEFnbU1hcmtlckNsdXN0ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0Q2x1c3RlcmVySW5zdGFuY2UoKS50aGVuKGNsdXN0ZXIgPT4ge1xyXG4gICAgICBpZiAoYy56b29tT25DbGljayAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY2x1c3Rlci56b29tT25DbGlja18gPSBjLnpvb21PbkNsaWNrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEF2ZXJhZ2VDZW50ZXIoYzogQWdtTWFya2VyQ2x1c3Rlcik6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRDbHVzdGVyZXJJbnN0YW5jZSgpLnRoZW4oY2x1c3RlciA9PiB7XHJcbiAgICAgIGlmIChjLmF2ZXJhZ2VDZW50ZXIgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNsdXN0ZXIuYXZlcmFnZUNlbnRlcl8gPSBjLmF2ZXJhZ2VDZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0SW1hZ2VQYXRoKGM6IEFnbU1hcmtlckNsdXN0ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0Q2x1c3RlcmVySW5zdGFuY2UoKS50aGVuKGNsdXN0ZXIgPT4ge1xyXG4gICAgICBpZiAoYy5pbWFnZVBhdGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNsdXN0ZXIuaW1hZ2VQYXRoXyA9IGMuaW1hZ2VQYXRoO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldE1pbmltdW1DbHVzdGVyU2l6ZShjOiBBZ21NYXJrZXJDbHVzdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldENsdXN0ZXJlckluc3RhbmNlKCkudGhlbihjbHVzdGVyID0+IHtcclxuICAgICAgaWYgKGMubWluaW11bUNsdXN0ZXJTaXplICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjbHVzdGVyLm1pbmltdW1DbHVzdGVyU2l6ZV8gPSBjLm1pbmltdW1DbHVzdGVyU2l6ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRJbWFnZUV4dGVuc2lvbihjOiBBZ21NYXJrZXJDbHVzdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldENsdXN0ZXJlckluc3RhbmNlKCkudGhlbihjbHVzdGVyID0+IHtcclxuICAgICAgaWYgKGMuaW1hZ2VFeHRlbnNpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNsdXN0ZXIuaW1hZ2VFeHRlbnNpb25fID0gYy5pbWFnZUV4dGVuc2lvbjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDbHVzdGVyRXZlbnRPYnNlcnZhYmxlPFQ+KGV2ZW50TmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxUPikgPT4ge1xyXG4gICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9jbHVzdGVyZXJJbnN0YW5jZS50aGVuKChtOiBNYXJrZXJDbHVzdGVyZXJJbnN0YW5jZSkgPT4ge1xyXG4gICAgICAgICAgbS5hZGRMaXN0ZW5lcihldmVudE5hbWUsIChlOiBUKSA9PiB0aGlzLl96b25lLnJ1bigoKSA9PiBvYnNlcnZlci5uZXh0KGUpKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRDYWxjdWxhdG9yIChjOiBBZ21NYXJrZXJDbHVzdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldENsdXN0ZXJlckluc3RhbmNlKCkudGhlbihjbHVzdGVyID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiBjLmNhbGN1bGF0b3IgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjbHVzdGVyLnNldENhbGN1bGF0b3IoYy5jYWxjdWxhdG9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==