Angular-google-maps: рдкреНрд░рд╢реНрди: MarkerManager.getNativeMarker ()

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рд╕рд┐рддре░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: SebastianM/angular-google-maps

рд╣рд╛рдп, @ рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрди рдПрдоред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдореВрд▓ рдорд╛рд░реНрдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SebmGoogleMapMarker рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

this.markerManager.getNativeMarker(INSTANCE_OF_SebmGoogleMapMarker).then((nativeMarker) => {
  console.log('YEAH marker is here: ' + nativeMarker);
})

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ sebm-google-map рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдорд╛рд░реНрдХрд░рдореИрдиреЗрдЬрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдореВрд▓ рдШрдЯрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд╕рд╛рде рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<my-parent-component>
    <sebm-google-map>
        <get-map-objects (markerManager)="setMarkerManager($event)">
            <sebm-google-map-marker ... ></sebm-google-map-marker>
        </get-map-objects>
    </sebm-google-map>
</my-parent-component>

рдлрд┐рд░рдирд┐рд░реНрджреЗрд╢ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

import { Directive, Output, EventEmitter, AfterViewInit, ContentChildren, QueryList } from '@angular/core';
import { GoogleMapsAPIWrapper, MarkerManager, SebmGoogleMapMarker } from 'angular2-google-maps/core';

@Directive({
  selector: 'get-map-objects',
})
export class GetMapObjectsDirective implements AfterViewInit {

  /**
   * Get native map object
   */
  private _map: any = null;
  @Output('map') mapChanged: EventEmitter<any> = new EventEmitter<any>();
  set map(val){
    this._map = val;
    this.mapChanged.emit(val);
  }
  get map(){
    return this._map;
  }

  /**
   * Get marker manager
   */
  private _markerManager: any = null;
  @Output('markerManager') markerManagerChanged: EventEmitter<MarkerManager> = new EventEmitter<MarkerManager>();
  set markerManager(val){
    this._markerManager = val;
    this.markerManagerChanged.emit(val);
  }
  get markerManager(){
    return this._markerManager;
  }

  /**
   * Get sebm markers
   */
  private _markers: any = null;
  @Output('markers') markersChanged: EventEmitter<SebmGoogleMapMarker[]> = new EventEmitter<SebmGoogleMapMarker[]>();
  set markers(val){
    this._markers = val;
    this.markersChanged.emit(val);
  }
  get markers(){
    return this._markers;
  }
  @ContentChildren(SebmGoogleMapMarker) markerChildren: QueryList<SebmGoogleMapMarker>;

  constructor(
    private googleMapsWrapper: GoogleMapsAPIWrapper,
    private googleMarkerManager: MarkerManager
  ) { }

  ngAfterViewInit() {
    // get native map
    this.googleMapsWrapper.getNativeMap().then(map => {
      this.map = map;
    }, error => {
      throw error;
    })

    // get marker manager
    this.markerManager = this.googleMarkerManager;

    // get markers
    this.markerChildren.changes.subscribe(markers => {
      this.markers = markers._results;
    })
  }
}

рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреЗ рдореВрд▓ рдШрдЯрдХ рдореЗрдВ, рдорд╛рд░реНрдХрд░ рдкреНрд░рдмрдВрдзрдХ (рдФрд░ рдорд╛рд░реНрдХрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ:

setMarkerManager(markerManager: MarkerManager){
    this.markerManager = markerManager;
  }

  /**
   * Sets the markers, used by spidifier
   */
  setMarkers(markers: SebmGoogleMapMarker[]){
    this.markers = markers;
    for(let marker of markers){
      this.markerManager.getNativeMarker(marker).then(marker => {
        this.overlappingMarkerSpidifier.addMarker(marker);
      });
    }
  }

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛

рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ sebm-google-map рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдорд╛рд░реНрдХрд░рдореИрдиреЗрдЬрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдореВрд▓ рдШрдЯрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд╕рд╛рде рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<my-parent-component>
    <sebm-google-map>
        <get-map-objects (markerManager)="setMarkerManager($event)">
            <sebm-google-map-marker ... ></sebm-google-map-marker>
        </get-map-objects>
    </sebm-google-map>
</my-parent-component>

рдлрд┐рд░рдирд┐рд░реНрджреЗрд╢ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

import { Directive, Output, EventEmitter, AfterViewInit, ContentChildren, QueryList } from '@angular/core';
import { GoogleMapsAPIWrapper, MarkerManager, SebmGoogleMapMarker } from 'angular2-google-maps/core';

@Directive({
  selector: 'get-map-objects',
})
export class GetMapObjectsDirective implements AfterViewInit {

  /**
   * Get native map object
   */
  private _map: any = null;
  @Output('map') mapChanged: EventEmitter<any> = new EventEmitter<any>();
  set map(val){
    this._map = val;
    this.mapChanged.emit(val);
  }
  get map(){
    return this._map;
  }

  /**
   * Get marker manager
   */
  private _markerManager: any = null;
  @Output('markerManager') markerManagerChanged: EventEmitter<MarkerManager> = new EventEmitter<MarkerManager>();
  set markerManager(val){
    this._markerManager = val;
    this.markerManagerChanged.emit(val);
  }
  get markerManager(){
    return this._markerManager;
  }

  /**
   * Get sebm markers
   */
  private _markers: any = null;
  @Output('markers') markersChanged: EventEmitter<SebmGoogleMapMarker[]> = new EventEmitter<SebmGoogleMapMarker[]>();
  set markers(val){
    this._markers = val;
    this.markersChanged.emit(val);
  }
  get markers(){
    return this._markers;
  }
  @ContentChildren(SebmGoogleMapMarker) markerChildren: QueryList<SebmGoogleMapMarker>;

  constructor(
    private googleMapsWrapper: GoogleMapsAPIWrapper,
    private googleMarkerManager: MarkerManager
  ) { }

  ngAfterViewInit() {
    // get native map
    this.googleMapsWrapper.getNativeMap().then(map => {
      this.map = map;
    }, error => {
      throw error;
    })

    // get marker manager
    this.markerManager = this.googleMarkerManager;

    // get markers
    this.markerChildren.changes.subscribe(markers => {
      this.markers = markers._results;
    })
  }
}

рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреЗ рдореВрд▓ рдШрдЯрдХ рдореЗрдВ, рдорд╛рд░реНрдХрд░ рдкреНрд░рдмрдВрдзрдХ (рдФрд░ рдорд╛рд░реНрдХрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ:

setMarkerManager(markerManager: MarkerManager){
    this.markerManager = markerManager;
  }

  /**
   * Sets the markers, used by spidifier
   */
  setMarkers(markers: SebmGoogleMapMarker[]){
    this.markers = markers;
    for(let marker of markers){
      this.markerManager.getNativeMarker(marker).then(marker => {
        this.overlappingMarkerSpidifier.addMarker(marker);
      });
    }
  }

рд╣рд╛рдп @ рдореИрдХреНрд╕рдордордлреЛрд░реНрдб
рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ,
рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

@рдореИрдХреНрд╕рдордордлреЛрд░реНрдб
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣реИред
рдореИрдВ рдорд╛рд░реНрдХрд░ рдХреЗ рд╣реЛрд╡рд░ рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ infowindow рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рднреЗрдЬреЗрдВрдЧреЗ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

PeterSisovsky picture PeterSisovsky  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

muhammad-shahzad-anjum picture muhammad-shahzad-anjum  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

n1t3w0lf picture n1t3w0lf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

matishw picture matishw  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ChrisDevinePimss picture ChrisDevinePimss  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ