UNPKG

ng2-bingmaps

Version:
79 lines (77 loc) 3.11 kB
/** * ng2-bingmaps - Angular 2 components for Bing Maps * @version v0.2.0 * @link https://github.com/youjustgo/ng2-bingmaps * @license MIT */ 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); }; import { Injectable, NgZone } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import { BingMapsAPIWrapper } from './bing-maps-api-wrapper'; export let MarkerManager = class MarkerManager { constructor(_mapsWrapper, _zone) { this._mapsWrapper = _mapsWrapper; this._zone = _zone; this._markers = new Map(); } deleteMarker(marker) { const m = this._markers.get(marker); if (m == null) { // marker already deleted return Promise.resolve(); } return m.then((m) => { return this._zone.run(() => { m.deleteMarker(); this._markers.delete(marker); }); }); } updateMarkerPosition(marker) { return this._markers.get(marker).then((m) => m.setPosition({ lat: marker.latitude, lng: marker.longitude })); } updateTitle(marker) { return this._markers.get(marker).then((m) => m.setTitle(marker.title)); } updateLabel(marker) { return this._markers.get(marker).then((m) => { m.setLabel(marker.label); }); } updateDraggable(marker) { return this._markers.get(marker).then((m) => m.setDraggable(marker.draggable)); } updateIcon(marker) { return this._markers.get(marker).then((m) => m.setIcon(marker.iconUrl)); } addMarker(marker) { const markerPromise = this._mapsWrapper.createMarker({ position: { lat: marker.latitude, lng: marker.longitude }, label: marker.label, draggable: marker.draggable, icon: marker.iconUrl }); this._markers.set(marker, markerPromise); } getNativeMarker(marker) { return this._markers.get(marker); } createEventObservable(eventName, marker) { return Observable.create((observer) => { this._markers.get(marker).then((m) => { m.addListener(eventName, (e) => this._zone.run(() => observer.next(e))); }); }); } }; MarkerManager = __decorate([ Injectable(), __metadata('design:paramtypes', [BingMapsAPIWrapper, NgZone]) ], MarkerManager); //# sourceMappingURL=marker-manager.js.map