UNPKG

@a7gm/js-marker-clusterer

Version:

Angular Google Maps (AGM) extension for js-marker-clusterer support

151 lines 6.18 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@angular/core"); require("js-marker-clusterer"); var marker_manager_1 = require("../../../core/services/managers/marker-manager"); var google_maps_api_wrapper_1 = require("../../../core/services/google-maps-api-wrapper"); var ClusterManager = /** @class */ (function (_super) { __extends(ClusterManager, _super); function ClusterManager(_mapsWrapper, _zone) { var _this = _super.call(this, _mapsWrapper, _zone) || this; _this._mapsWrapper = _mapsWrapper; _this._zone = _zone; _this._clustererInstance = new Promise(function (resolver) { _this._resolver = resolver; }); return _this; } ClusterManager.prototype.init = function (options) { var _this = this; this._mapsWrapper.getNativeMap().then(function (map) { var clusterer = new MarkerClusterer(map, [], options); _this._resolver(clusterer); }); }; ClusterManager.prototype.addMarker = function (marker) { var clusterPromise = this._clustererInstance; var markerPromise = this._mapsWrapper .createMarker({ position: { lat: marker.latitude, lng: marker.longitude }, label: marker.label, draggable: marker.draggable, icon: { url: marker.iconUrl }, opacity: marker.opacity, visible: marker.visible, zIndex: marker.zIndex, title: marker.title, clickable: marker.clickable, }, false); Promise .all([clusterPromise, markerPromise]) .then(function (_a) { var cluster = _a[0], marker = _a[1]; return cluster.addMarker(marker); }); this._markers.set(marker, markerPromise); }; ClusterManager.prototype.deleteMarker = function (marker) { var _this = this; var m = this._markers.get(marker); if (m == null) { // marker already deleted return Promise.resolve(); } return m.then(function (m) { _this._zone.run(function () { m.setMap(null); _this._clustererInstance.then(function (cluster) { cluster.removeMarker(m); _this._markers.delete(marker); }); }); }); }; ClusterManager.prototype.clearMarkers = function () { return this._clustererInstance.then(function (cluster) { cluster.clearMarkers(); }); }; ClusterManager.prototype.setGridSize = function (c) { this._clustererInstance.then(function (cluster) { cluster.setGridSize(c.gridSize); }); }; ClusterManager.prototype.setMaxZoom = function (c) { this._clustererInstance.then(function (cluster) { cluster.setMaxZoom(c.maxZoom); }); }; ClusterManager.prototype.setStyles = function (c) { this._clustererInstance.then(function (cluster) { cluster.setStyles(c.styles); }); }; ClusterManager.prototype.setZoomOnClick = function (c) { this._clustererInstance.then(function (cluster) { if (c.zoomOnClick !== undefined) { cluster.zoomOnClick_ = c.zoomOnClick; } }); }; ClusterManager.prototype.setAverageCenter = function (c) { this._clustererInstance.then(function (cluster) { if (c.averageCenter !== undefined) { cluster.averageCenter_ = c.averageCenter; } }); }; ClusterManager.prototype.setImagePath = function (c) { this._clustererInstance.then(function (cluster) { if (c.imagePath !== undefined) { cluster.imagePath_ = c.imagePath; } }); }; ClusterManager.prototype.setMinimumClusterSize = function (c) { this._clustererInstance.then(function (cluster) { if (c.minimumClusterSize !== undefined) { cluster.minimumClusterSize_ = c.minimumClusterSize; } }); }; ClusterManager.prototype.setImageExtension = function (c) { this._clustererInstance.then(function (cluster) { if (c.imageExtension !== undefined) { cluster.imageExtension_ = c.imageExtension; } }); }; ClusterManager = __decorate([ core_1.Injectable(), __metadata("design:paramtypes", [google_maps_api_wrapper_1.GoogleMapsAPIWrapper, core_1.NgZone]) ], ClusterManager); return ClusterManager; }(marker_manager_1.MarkerManager)); exports.ClusterManager = ClusterManager; //# sourceMappingURL=cluster-manager.js.map