File

src/lib/services/managers/marker.manager.ts

Index

Properties
Methods

Constructor

constructor(_mapsWrapper: MapsApiWrapper, _zone: NgZone)
Parameters :
Name Type Optional
_mapsWrapper MapsApiWrapper No
_zone NgZone No

Methods

Public Async addMarker
addMarker(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : Promise<void>
Public Abstract createEventObservable
createEventObservable(eventName: string | Array, marker: NgMapsMarkerComponent)
Type parameters :
  • E
Parameters :
Name Type Optional
eventName string | Array<string> No
marker NgMapsMarkerComponent No
Returns : Observable<E>
Public Abstract deleteMarker
deleteMarker(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public getNativeMarker
getNativeMarker(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : T | undefined
Public Abstract updateAnimation
updateAnimation(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateClickable
updateClickable(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateDraggable
updateDraggable(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateIcon
updateIcon(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateIconLegacy
updateIconLegacy(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateLabel
updateLabel(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateMarkerPosition
updateMarkerPosition(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateOpacity
updateOpacity(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateTitle
updateTitle(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateVisible
updateVisible(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void
Public Abstract updateZIndex
updateZIndex(marker: NgMapsMarkerComponent)
Parameters :
Name Type Optional
marker NgMapsMarkerComponent No
Returns : void

Properties

Protected _markers
Type : Map<NgMapsMarkerComponent | T>
Default value : new Map< NgMapsMarkerComponent, T >()
import { Injectable, NgZone } from '@angular/core';
import { Observable } from 'rxjs';

import { NgMapsMarkerComponent } from '../../directives/marker';
import { MapsApiWrapper } from '../maps-api-wrapper';

@Injectable()
export abstract class MarkerManager<T = any> {
  protected _markers: Map<NgMapsMarkerComponent, T> = new Map<
    NgMapsMarkerComponent,
    T
  >();

  constructor(
    protected _mapsWrapper: MapsApiWrapper,
    protected _zone: NgZone,
  ) {}

  public abstract deleteMarker(marker: NgMapsMarkerComponent): void;

  public abstract updateMarkerPosition(marker: NgMapsMarkerComponent): void;

  public abstract updateTitle(marker: NgMapsMarkerComponent): void;

  public abstract updateLabel(marker: NgMapsMarkerComponent): void;

  public abstract updateDraggable(marker: NgMapsMarkerComponent): void;

  public abstract updateIconLegacy(marker: NgMapsMarkerComponent): void;
  public abstract updateIcon(marker: NgMapsMarkerComponent): void;

  public abstract updateOpacity(marker: NgMapsMarkerComponent): void;

  public abstract updateVisible(marker: NgMapsMarkerComponent): void;

  public abstract updateZIndex(marker: NgMapsMarkerComponent): void;

  public abstract updateClickable(marker: NgMapsMarkerComponent): void;

  public abstract updateAnimation(marker: NgMapsMarkerComponent): void;

  public async addMarker(marker: NgMapsMarkerComponent): Promise<void> {
    if (!marker.latitude || !marker.longitude) {
      return;
    }
    const m = await this._mapsWrapper.createMarker(
      { lat: marker.latitude, lng: marker.longitude },
      {
        label: marker.label,
        draggable: marker.draggable,
        icon: marker.iconUrl,
        opacity: marker.opacity,
        optimized: marker.optimized,
        visible: marker.visible,
        zIndex: marker.zIndex,
        title: marker.title,
        clickable: marker.clickable,
        animation:
          typeof marker.animation === 'string'
            ? google.maps.Animation[marker.animation]
            : marker.animation,
      } as any,
    );
    this._markers.set(marker, m);
  }

  public getNativeMarker(marker: NgMapsMarkerComponent): T | undefined {
    return this._markers.get(marker);
  }

  public abstract createEventObservable<E>(
    eventName: string | Array<string>,
    marker: NgMapsMarkerComponent,
  ): Observable<E>;
}

results matching ""

    No results matching ""