src/lib/managers/polygon-manager.ts
Properties |
|
Methods |
constructor(_mapsWrapper: GoogleMapsAPIWrapper, _zone: NgZone)
|
|||||||||
Defined in src/lib/managers/polygon-manager.ts:14
|
|||||||||
Parameters :
|
addPolygon | ||||||
addPolygon(path: NgMapsPolygon)
|
||||||
Defined in src/lib/managers/polygon-manager.ts:21
|
||||||
Parameters :
Returns :
void
|
createEventObservable | |||||||||
createEventObservable(eventName: string, path: NgMapsPolygon)
|
|||||||||
Defined in src/lib/managers/polygon-manager.ts:70
|
|||||||||
Type parameters :
|
|||||||||
Parameters :
Returns :
Observable<T>
|
deletePolygon | ||||||
deletePolygon(paths: NgMapsPolygon)
|
||||||
Defined in src/lib/managers/polygon-manager.ts:57
|
||||||
Parameters :
Returns :
Promise<void>
|
setPolygonOptions | |||||||||
setPolygonOptions(path: NgMapsPolygon, options: literal type)
|
|||||||||
Defined in src/lib/managers/polygon-manager.ts:48
|
|||||||||
Parameters :
Returns :
Promise<void>
|
Async updatePolygon | ||||||
updatePolygon(polygon: NgMapsPolygon)
|
||||||
Defined in src/lib/managers/polygon-manager.ts:39
|
||||||
Parameters :
Returns :
Promise<void>
|
Private _polygons |
Type : Map<NgMapsPolygon | Promise<google.maps.Polygon>>
|
Default value : new Map<
NgMapsPolygon,
Promise<google.maps.Polygon>
>()
|
Defined in src/lib/managers/polygon-manager.ts:11
|
import { Injectable, NgZone } from '@angular/core';
import { Observable, Observer } from 'rxjs';
import { NgMapsPolygon } from '../directives/polygon';
import { GoogleMapsAPIWrapper, NgMapsViewComponent } from '@ng-maps/core';
@Injectable({
providedIn: NgMapsViewComponent,
})
export class PolygonManager {
private _polygons: Map<NgMapsPolygon, Promise<google.maps.Polygon>> = new Map<
NgMapsPolygon,
Promise<google.maps.Polygon>
>();
constructor(
private _mapsWrapper: GoogleMapsAPIWrapper,
private _zone: NgZone,
) {}
addPolygon(path: NgMapsPolygon) {
const polygonPromise = this._mapsWrapper.createPolygon({
clickable: path.clickable,
draggable: path.draggable,
editable: path.editable,
fillColor: path.fillColor,
fillOpacity: path.fillOpacity,
geodesic: path.geodesic,
paths: path.paths,
strokeColor: path.strokeColor,
strokeOpacity: path.strokeOpacity,
strokeWeight: path.strokeWeight,
visible: path.visible,
zIndex: path.zIndex,
});
this._polygons.set(path, polygonPromise);
}
async updatePolygon(polygon: NgMapsPolygon): Promise<void> {
const item = await this._polygons.get(polygon);
if (item != null) {
this._zone.run(() => {
item.setPaths(polygon.paths);
});
}
}
setPolygonOptions(
path: NgMapsPolygon,
options: { [propName: string]: any },
): Promise<void> {
return this._polygons.get(path).then((l: google.maps.Polygon) => {
l.setOptions(options);
});
}
deletePolygon(paths: NgMapsPolygon): Promise<void> {
const m = this._polygons.get(paths);
if (m == null) {
return Promise.resolve();
}
return m.then((l: google.maps.Polygon) => {
return this._zone.run(() => {
l.setMap(null);
this._polygons.delete(paths);
});
});
}
createEventObservable<T>(
eventName: string,
path: NgMapsPolygon,
): Observable<T> {
return new Observable((observer: Observer<T>) => {
this._polygons.get(path).then((l: google.maps.Polygon) => {
l.addListener(eventName, (e: T) =>
this._zone.run(() => observer.next(e)),
);
});
});
}
}