UNPKG

@ng-maps/google

Version:

**@ng-maps/google** is a simple, modular and tree-shakable library for displaying google-maps inside an angular application

91 lines 12.1 kB
import { Injectable, NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { InfoWindowManager, MapsApiWrapper, MarkerManager, } from '@ng-maps/core'; import * as i0 from "@angular/core"; import * as i1 from "@ng-maps/core"; export class GoogleInfoWindowManager extends InfoWindowManager { constructor(_mapsWrapper, _zone, _markerManager) { super(_mapsWrapper, _zone, _markerManager); } async deleteInfoWindow(infoWindow) { const iWindow = await this._infoWindows.get(infoWindow); if (iWindow == null) { // info window already deleted return; } else { return this._zone.run(() => { iWindow.close(); this._infoWindows.delete(infoWindow); }); } } setPosition(infoWindow) { if (!infoWindow.latitude || !infoWindow.longitude) { return; } const i = this._infoWindows.get(infoWindow); i?.setPosition({ lat: infoWindow.latitude, lng: infoWindow.longitude, }); } setZIndex(infoWindow) { if (!infoWindow.zIndex) { return; } const i = this._infoWindows.get(infoWindow); i?.setZIndex(infoWindow.zIndex); } async open(infoWindow) { const w = this._infoWindows.get(infoWindow); const map = await this._mapsWrapper.getNativeMap(); if (infoWindow.hostMarker != null) { const marker = await this._markerManager.getNativeMarker(infoWindow.hostMarker); w?.open(map, marker); } else { w?.open(map); } } close(infoWindow) { const w = this._infoWindows.get(infoWindow); w?.close(); } setOptions(infoWindow, options) { const i = this._infoWindows.get(infoWindow); i?.setOptions(options); } async addInfoWindow(infoWindow) { const options = { content: infoWindow.content?.nativeElement, maxWidth: infoWindow.maxWidth, zIndex: infoWindow.zIndex, disableAutoPan: infoWindow.disableAutoPan, }; const center = typeof infoWindow.latitude === 'number' && typeof infoWindow.longitude === 'number' ? { lat: infoWindow.latitude, lng: infoWindow.longitude, } : null; const instance = await this._mapsWrapper.createInfoWindow(center, options); this._infoWindows.set(infoWindow, instance); } /** * Creates a Google Maps event listener for the given InfoWindow as an Observable */ createEventObservable(eventName, infoWindow) { const i = this._infoWindows.get(infoWindow); return new Observable((observer) => { i?.addListener(eventName, (e) => this._zone.run(() => observer.next(e))); }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: GoogleInfoWindowManager, deps: [{ token: i1.MapsApiWrapper }, { token: i0.NgZone }, { token: i1.MarkerManager }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: GoogleInfoWindowManager }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: GoogleInfoWindowManager, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.MapsApiWrapper }, { type: i0.NgZone }, { type: i1.MarkerManager }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby13aW5kb3cubWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ29vZ2xlL3NyYy9saWIvbWFuYWdlcnMvaW5mby13aW5kb3cubWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sTUFBTSxDQUFDO0FBRTVDLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGFBQWEsR0FFZCxNQUFNLGVBQWUsQ0FBQzs7O0FBR3ZCLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxpQkFBeUM7SUFDcEYsWUFDRSxZQUE0QixFQUM1QixLQUFhLEVBQ2IsY0FBNkI7UUFFN0IsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsVUFBcUM7UUFFckMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNwQiw4QkFBOEI7WUFDOUIsT0FBTztRQUNULENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxVQUFxQztRQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVB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LENBQUMsUUFBcUIsRUFBRSxFQUFFO1lBQzlDLENBQUMsRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBSSxFQUFFLEVBQUUsQ0FDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN2QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXRHVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2ZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgR2VvUG9pbnQsXG4gIEluZm9XaW5kb3dNYW5hZ2VyLFxuICBNYXBzQXBpV3JhcHBlcixcbiAgTWFya2VyTWFuYWdlcixcbiAgTmdNYXBzSW5mb1dpbmRvd0NvbXBvbmVudCxcbn0gZnJvbSAnQG5nLW1hcHMvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHb29nbGVJbmZvV2luZG93TWFuYWdlciBleHRlbmRzIEluZm9XaW5kb3dNYW5hZ2VyPGdvb2dsZS5tYXBzLkluZm9XaW5kb3c+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgX21hcHNXcmFwcGVyOiBNYXBzQXBpV3JhcHBlcixcbiAgICBfem9uZTogTmdab25lLFxuICAgIF9tYXJrZXJNYW5hZ2VyOiBNYXJrZXJNYW5hZ2VyLFxuICApIHtcbiAgICBzdXBlcihfbWFwc1dyYXBwZXIsIF96b25lLCBfbWFya2VyTWFuYWdlcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlSW5mb1dpbmRvdyhcbiAgICBpbmZvV2luZG93OiBOZ01hcHNJbmZvV2luZG93Q29tcG9uZW50LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpV2luZG93ID0gYXdhaXQgdGhpcy5faW5mb1dpbmRvd3MuZ2V0KGluZm9XaW5kb3cpO1xuICAgIGlmIChpV2luZG93ID09IG51bGwpIHtcbiAgICAgIC8vIGluZm8gd2luZG93IGFscmVhZHkgZGVsZXRlZFxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpV2luZG93LmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX2luZm9XaW5kb3dzLmRlbGV0ZShpbmZvV2luZG93KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRQb3NpdGlvbihpbmZvV2luZG93OiBOZ01hcHNJbmZvV2luZG93Q29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKCFpbmZvV2luZG93LmxhdGl0dWRlIHx8ICFpbmZvV2luZG93LmxvbmdpdHVkZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpID0gdGhpcy5faW5mb1dpbmRvd3MuZ2V0KGluZm9XaW5kb3cpO1xuICAgIGk/LnNldFBvc2l0aW9uKHtcbiAgICAgIGxhdDogaW5mb1dpbmRvdy5sYXRpdHVkZSxcbiAgICAgIGxuZzogaW5mb1dpbmRvdy5sb25naXR1ZGUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0WkluZGV4KGluZm9XaW5kb3c6IE5nTWFwc0luZm9XaW5kb3dDb21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAoIWluZm9XaW5kb3cuekluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGkgPSB0aGlzLl9pbmZvV2luZG93cy5nZXQoaW5mb1dpbmRvdyk7XG4gICAgaT8uc2V0WkluZGV4KGluZm9XaW5kb3cuekluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvcGVuKGluZm9XaW5kb3c6IE5nTWFwc0luZm9XaW5kb3dDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB3ID0gdGhpcy5faW5mb1dpbmRvd3MuZ2V0KGluZm9XaW5kb3cpO1xuICAgIGNvbnN0IG1hcCA9IGF3YWl0IHRoaXMuX21hcHNXcmFwcGVyLmdldE5hdGl2ZU1hcCgpO1xuICAgIGlmIChpbmZvV2luZG93Lmhvc3RNYXJrZXIgIT0gbnVsbCkge1xuICAgICAgY29uc3QgbWFya2VyID0gYXdhaXQgdGhpcy5fbWFya2VyTWFuYWdlci5nZXROYXRpdmVNYXJrZXIoXG4gICAgICAgIGluZm9XaW5kb3cuaG9zdE1hcmtlcixcbiAgICAgICk7XG4gICAgICB3Py5vcGVuKG1hcCwgbWFya2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdz8ub3BlbihtYXApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZShpbmZvV2luZG93OiBOZ01hcHNJbmZvV2luZG93Q29tcG9uZW50KTogdm9pZCB7XG4gICAgY29uc3QgdyA9IHRoaXMuX2luZm9XaW5kb3dzLmdldChpbmZvV2luZG93KTtcbiAgICB3Py5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIHNldE9wdGlvbnMoXG4gICAgaW5mb1dpbmRvdzogTmdNYXBzSW5mb1dpbmRvd0NvbXBvbmVudCxcbiAgICBvcHRpb25zOiBnb29nbGUubWFwcy5JbmZvV2luZG93T3B0aW9ucyxcbiAgKSB7XG4gICAgY29uc3QgaSA9IHRoaXMuX2luZm9XaW5kb3dzLmdldChpbmZvV2luZG93KTtcbiAgICBpPy5zZXRPcHRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEluZm9XaW5kb3coaW5mb1dpbmRvdzogTmdNYXBzSW5mb1dpbmRvd0NvbXBvbmVudCkge1xuICAgIGNvbnN0IG9wdGlvbnM6IGdvb2dsZS5tYXBzLkluZm9XaW5kb3dPcHRpb25zID0ge1xuICAgICAgY29udGVudDogaW5mb1dpbmRvdy5jb250ZW50Py5uYXRpdmVFbGVtZW50LFxuICAgICAgbWF4V2lkdGg6IGluZm9XaW5kb3cubWF4V2lkdGgsXG4gICAgICB6SW5kZXg6IGluZm9XaW5kb3cuekluZGV4LFxuICAgICAgZGlzYWJsZUF1dG9QYW46IGluZm9XaW5kb3cuZGlzYWJsZUF1dG9QYW4sXG4gICAgfTtcbiAgICBjb25zdCBjZW50ZXI6IEdlb1BvaW50IHwgbnVsbCA9XG4gICAgICB0eXBlb2YgaW5mb1dpbmRvdy5sYXRpdHVkZSA9PT0gJ251bWJlcicgJiZcbiAgICAgIHR5cGVvZiBpbmZvV2luZG93LmxvbmdpdHVkZSA9PT0gJ251bWJlcidcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBsYXQ6IGluZm9XaW5kb3cubGF0aXR1ZGUsXG4gICAgICAgICAgICBsbmc6IGluZm9XaW5kb3cubG9uZ2l0dWRlLFxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBhd2FpdCB0aGlzLl9tYXBzV3JhcHBlci5jcmVhdGVJbmZvV2luZG93KGNlbnRlciwgb3B0aW9ucyk7XG4gICAgdGhpcy5faW5mb1dpbmRvd3Muc2V0KGluZm9XaW5kb3csIGluc3RhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgR29vZ2xlIE1hcHMgZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBnaXZlbiBJbmZvV2luZG93IGFzIGFuIE9ic2VydmFibGVcbiAgICovXG4gIHB1YmxpYyBjcmVhdGVFdmVudE9ic2VydmFibGU8VD4oXG4gICAgZXZlbnROYW1lOiBzdHJpbmcsXG4gICAgaW5mb1dpbmRvdzogTmdNYXBzSW5mb1dpbmRvd0NvbXBvbmVudCxcbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc3QgaSA9IHRoaXMuX2luZm9XaW5kb3dzLmdldChpbmZvV2luZG93KTtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxUPikgPT4ge1xuICAgICAgaT8uYWRkTGlzdGVuZXIoZXZlbnROYW1lLCAoZTogVCkgPT5cbiAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4gb2JzZXJ2ZXIubmV4dChlKSksXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=