Angular-google-maps: рдорд╛рд░реНрдХрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  76рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: SebastianM/angular-google-maps

рдирдорд╕реНрддреЗ, рдЗрд╕ рдкрд░ https://github.com/googlemaps/js-marker-clusterer рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╛рд░реНрдХрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рд╕рдВрдХреЗрдд? рдзрдиреНрдпрд╡рд╛рдж!

discussion / question

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

@ siegerx3 рдпрд╣ рд╕рд░рд▓ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЧрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдПрдБ:

import { Directive } from '@angular/core';
import { GoogleMapsAPIWrapper } from 'angular2-google-maps/core';

@Directive({
  selector: 'custom-directive'
})
export class CustomMapDirective {
  constructor (private gmapsApi: GoogleMapsAPIWrapper) {
    this.gmapsApi.getNativeMap().then(map => {
      // map is the native google map object and the wrapper is the same instance as the one on the map
    });
  }
}

рдореИрдВрдиреЗ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдореБрдЭреЗ рдХрд┐рд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдЖрдк рдПрдХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд┐рдирд╛ рдпрд╣ рдХрд╣реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдШрдЯрдХ рдХреЗ directives рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ / рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдм рдмрд╕ рдЕрдкрдиреЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдореИрдк рдХреЗ рдЕрдВрджрд░ рдбрд╛рд▓реЗрдВ:

<sebm-google-map>
  <!-- markers, info windows, etc -->

  <custom-directive></custom-directive>
</sebm-google-map>

Angular2 DI рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдХрд╛рд░рдг, рдЪреВрдВрдХрд┐ рд╣рдо рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЛ GoogleMAPAPIWrapper рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рддрдм рддрдХ рдШрдЯрдХ рдЯреНрд░реА рдКрдкрд░ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХ рди рдорд┐рд▓ рдЬрд╛рдПред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ 1 рдЪрд░рдг рд╣реИ рдФрд░ рд╣рдо GoogleMapsAPIWrapper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ sebm-google-map рдШрдЯрдХ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

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

рдХреЛрдИ рдЦреЗрдж рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдХреЛрдИ рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореИрдВ рдЕрднреА рдЖрдкрдХреЛ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ

@SebastianM рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/SebastianM/angular2-google-maps/pull/311

рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ? markerclusterer js рдлрд╛рдЗрд▓реЗрдВ рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ рдЬреЛ рдореИрдВ .getMap () рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реВрдВред

@AbdulTheProgrammer рдореИрдВ рдЗрд╕ рдкрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореЗрд░реА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдЖрдкрдХреЛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдкрдиреЗ GoggleMapsAPIWrapper рд╕реЗрд╡рд╛ рдХреЗ рдЙрд╕реА рдЙрджрд╛рд╣рд░рдг рдкрд░ getMap () рдХрд╣рд╛ рд╣реИ, рдЬреЛ рдирдХреНрд╢реЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рд╕рдордп рдореЗрд░рд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реИ ...ред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ sebm-google-map рдХреЗ рдЕрдВрджрд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ; рдпрд╣ GoogleMAPAPIWrapper рдФрд░ рдиреЗрдЯрд┐рд╡ рдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдкреАрдЖрдИ (window.google.maps) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдорд╛рд░реНрдХрд░ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред

@ricardojbertolin рдЬреЛ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╕реЗрдмрд╕реНрдЯрд┐рдпрди рдиреЗ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдерд╛ # 311, рдирдХреНрд╢реЗ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдХрд╕реНрдЯрдо рдХрдВрдкреЛрдиреЗрдВрдЯ рд╣реИ рдХрд┐ рдореВрд▓ рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдХреИрд╕реЗ

рдореИрдВ js-рдорд╛рд░реНрдХрд░-рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдореВрд▓ рдирдХреНрд╢реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдорд┐рд▓рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдореВрд▓ рдорд╛рдирдЪрд┐рддреНрд░ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рднреА рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рдХреЛ рднреА рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреИрд╕реЗ рдореЗрд░реЗ <sebm-google-map-marker> s рдХреЗ рд▓рд┐рдП рдореВрд▓ рдорд╛рдирдЪрд┐рддреНрд░ рдорд╛рд░реНрдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@alexweber
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдФрд░ GoogleMapsApiWrapper рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ?
рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ "рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рд░рдЦрдиреЗ" рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред

@ siegerx3 рдпрд╣ рд╕рд░рд▓ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЧрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдПрдБ:

import { Directive } from '@angular/core';
import { GoogleMapsAPIWrapper } from 'angular2-google-maps/core';

@Directive({
  selector: 'custom-directive'
})
export class CustomMapDirective {
  constructor (private gmapsApi: GoogleMapsAPIWrapper) {
    this.gmapsApi.getNativeMap().then(map => {
      // map is the native google map object and the wrapper is the same instance as the one on the map
    });
  }
}

рдореИрдВрдиреЗ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдореБрдЭреЗ рдХрд┐рд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдЖрдк рдПрдХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд┐рдирд╛ рдпрд╣ рдХрд╣реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдШрдЯрдХ рдХреЗ directives рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ / рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдм рдмрд╕ рдЕрдкрдиреЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдореИрдк рдХреЗ рдЕрдВрджрд░ рдбрд╛рд▓реЗрдВ:

<sebm-google-map>
  <!-- markers, info windows, etc -->

  <custom-directive></custom-directive>
</sebm-google-map>

Angular2 DI рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдХрд╛рд░рдг, рдЪреВрдВрдХрд┐ рд╣рдо рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЛ GoogleMAPAPIWrapper рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рддрдм рддрдХ рдШрдЯрдХ рдЯреНрд░реА рдКрдкрд░ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХ рди рдорд┐рд▓ рдЬрд╛рдПред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ 1 рдЪрд░рдг рд╣реИ рдФрд░ рд╣рдо GoogleMapsAPIWrapper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ sebm-google-map рдШрдЯрдХ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

@jfmaeck MarkerManager рд╕реЗрд╡рд╛ рдкрд░ getNativeMarker() рдкрджреНрдзрддрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЙрд╕ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЙрд╕реА рдорд╛рд░реНрдХрд░ рдкреНрд░рдмрдВрдзрдХ рд╕реЗрд╡рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд░реИрдкрд░ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@alexweber
рдХреЛрдб рджреЗрдЦрдХрд░, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЕрдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж :)

рджреЗрд╢реА рдорд╛рд░реНрдХрд░ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдЖрдкрдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП @alexweber рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐: getNativeMarker() MarkerManager рдХреА рд╡рд┐рдзрд┐ SebmGoogleMapMarker рдЗрдВрд╕реНрдЯреЗрдВрд╕ (рдорд╛рд░реНрдХрд░ рдШрдЯрдХ) рдХреЛ рдЕрдкрдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕ рдШрдЯрдХ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@jfmaeck рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ! рдореИрдВ рдЗрд╕ рд╕рдордп 100% рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╢рд╛рдпрдж рдЕрдкрдиреЗ рдШрдЯрдХ рдореЗрдВ @ViewChild('myMarker'): SebmGoogleMapMarker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ # рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: <sebm-google-map-marker #myMarker> рдпрд╛рдж рд░рдЦреЗрдВ ViewChild рдХреЗрд╡рд▓ ngAfterViewInit рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

@alexweber рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ @ViewChildren рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рд░реНрдХрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдореИрдВрдиреЗ рдкреНрд▓рдВрдХрд░ рдкрд░ рдбреЗрдореЛ рдХреЛ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ рдФрд░ рдЙрд╕рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рддрд╛рдХрд┐ ViewChildren рдкрд░рд┐рдгрд╛рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рд╣реЛ рдЬрд╛рдП (рдлрд┐рд▓рд╣рд╛рд▓ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА):

markers after view init []

http://plnkr.co/edit/7rdOz3QswDL0pik7SmAS?p=preview

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рдореМрдХрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛ред

@jfmaeck рдЬрдм рдЖрдк @ContentChildren рдХрд╛ рдЙрдкрдпреЛрдЧ http://plnkr.co/edit/mukdlZ7K7C7m6aTdDTp?p=preview

@jfmaeck рдЖрдк рдХрд░реАрдм рдереЗ, рдпрд╣рд╛рдБ @ViewChildren рд╕рд╛рде рдЖрдкрдХреЗ рдкреНрд▓рдВрдХ рдХрд╛ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рдВрдЯрд╛ рд╣реИ: http://plnkr.co/edit/rJMCFoX9GokturcJljLh.p=preview

рдХрд╕реНрдЯрдо рдореИрдк рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @ContentChildren (рдЬреИрд╕реЗ @SebastianM рдиреЗ рдмрддрд╛рдпрд╛) рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдорд╛рд░реНрдХрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдХ рд╣реЛред рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ред

рдЖрдкрдХреЛ рдмрд╣реБрдд рдмрд╣реБрдд @SebastianM рдФрд░ @alexweber рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдм рд╕реЗ @alexweber @SebastianM рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдХреИрд╕реЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдЖрдк js-рдорд╛рд░реНрдХрд░-clusterer рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реЛ? рдХреНрдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╝реВрдо-рд╕реНрддрд░ рдкрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ? рдФрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдХреИрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░реВрдВ: http://i65.tinypic.com/10gxkcw.png

@ricardojbertolin рдХрд┐рд╕реА рднреА рдореМрдХрд╛ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ angular2 рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдирдпрд╛ рд╣реВрдВ (рдПрдХ рд╕рд╛рд▓ рд╕реЗ angularjs рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдФрд░ рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЦреЛ рдЧрдпрд╛ рд╣реВрдВред

@alexweber , рдХреНрдпрд╛ рдЖрдкрдиреЗ markerclusterer.js рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛? рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ?

@jpcode рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдХреБрдЫ рд╕рдордп рдореЗрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рд╣реБрдЖ ...

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╣рд▓ рд╣реИред
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд▓рдВрдХрд░ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдВ?
@jpcode
@alexweber

@ siegerx3 рдЕрдЪреНрдЫрд╛, рдмрд╣реБрдд рдорджрдж рдХрд░реЗрдЧрд╛ред
рдореИрдВ рд╕рд┐рд░реНрдл рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ + markerclusterer.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ siegerx3 , рдпрд╣ рдПрдХ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ Google рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
https://plnkr.co/Tr1Ykj12HCkF9InQmuW

POC рд▓рдВрдмрд┐рдд:
рдХреЛрдгреАрдп 2-рдЧреВрдЧрд▓-рдореИрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП "Google" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрджрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд▓реЛрдб Google рдХреЛ lib рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ред
рдкреНрд░рджрд╛рди рдХрд░реЗрдВ (MapsAPILoader, {useClass: NoOpMapsAPILoader}) рдФрд░ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░рд░.js рдЬреЛрдбрд╝реЗрдВред

рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рд╣реИ рдЕрдЧрд░ рдХреЛрдгреАрдп 2-рдЧреВрдЧрд▓-рдореИрдкреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ :)

@jpcode
рдореИрдВрдиреЗ рдШрдВрдЯреЛрдВ рдЗрд╕реЗ рдкреНрд▓рдВрдХрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ ... рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдлрд▓рддрд╛ рдХреЗред
рд╣рдореЗрд╢рд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдпрд╣рд╛рдБ рдХреЗрд╡рд▓ рдХреЛрдб рджрд┐рдЦрд╛рдКрдВрдЧрд╛ ...

import { Directive, OnDestroy, OnInit } from '@angular/core';
import { GoogleMapsAPIWrapper } from 'angular2-google-maps/core';
import { GoogleMap, Marker } from 'angular2-google-maps/core/services/google-maps-types';
import { AppService } from '../../../services/index';
import { Observable } from 'rxjs';

declare const google;
declare const MarkerClusterer;

@Directive({
  selector: 'custom-map'
})
export class CustomMapDirective implements OnInit, OnDestroy {

  private map: GoogleMap;

  constructor(private gmapsApi: GoogleMapsAPIWrapper, private appService: AppService) {
  }

  ngOnInit() {

    this.gmapsApi.getNativeMap().then(map => {
      this.map = map;

      let shopMarker = {
        url: "assets/img/marker_shop.svg", // url
        scaledSize: new google.maps.Size(50, 50)
      }
      let loungeMarker = {
        url: "assets/img/marker_lounge.svg", // url
        scaledSize: new google.maps.Size(50, 50)
      }

      let markers = [];

      let style = {
        url: "/assets/img/marker.svg",
        height: 50,
        width: 50,
        anchor: [-14, 0],
        textColor: '#bd0b1d',
        textSize: 11,
        backgroundPosition: "center center"
      };

      var options = {
        imagePath: "/assets/img/marker",
        gridSize: 70,
        styles: [style, style, style]
      };

      Observable
        .interval(500)
        .skipWhile((s) => this.appService.Shops == null || this.appService.Shops.length <= 0)
        .take(1)
        .subscribe(() => {
          for (let shop of this.appService.Shops) {
            var marker = new google.maps.Marker({
              position: new google.maps.LatLng(shop.Latitude, shop.Longitude),
              icon: shop.Lounge ? loungeMarker : shopMarker
            });
            google.maps.event.addListener(marker, 'click', () => {
              this.appService.SelectedShop = shop;
            });
            markers.push(marker);

          }

          var markerCluster = new MarkerClusterer(map, markers, options);
          }
        })
    });
  }
}

рдЖрдк рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдХреЛрдгреАрдп 2-рдЧреВрдЧрд▓-рдореИрдкреНрд╕ рдЯреИрдЧ рдореЗрдВ рдбрд╛рд▓реЗрдВ:

<sebm-google-map>
      <custom-map></custom-map>
</sebm-google-map>

@ siegerx3 , рдореИрдВрдиреЗ рдХреЛрдгреАрдп 2-рдЧреВрдЧрд▓-рдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреАрдУрд╕реА рдмрдирд╛рдпрд╛

рджреГрд╖реНрдЯрд┐рдХреЛрдг:

  • Index.html рд╕реЗ google рдореИрдкреНрд╕ рдЬреЛрдбрд╝реЗрдВ
  • рдЖрдпрд╛рдд рдХреНрд▓рд╕реНрдЯрд░ .js
  • рдХреЛрдгреАрдп рдЧреВрдЧрд▓-рдЧреВрдЧрд▓-рдореИрдкреНрд╕ (рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдХреЛ рд░реЛрдХреЗрдВ
  • Orignal map рдЙрджрд╛рд╣рд░рдг рдХреЛ lib рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВ
  • рд╡реИрд╢реНрд╡рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП google / markercluster рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЖрдк рдХреЛрдгреАрдп-2-рдЧреВрдЧрд▓-рдореИрдкреНрд╕ рд╕реЗ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдмреЗрд╣рддрд░ рд╣реИред
->

рдХреНрдпреЛрдВрдХрд┐ рдореИрдк рдХреЛ рдкреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд▓рд┐рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╕ рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рд▓рд┐рдмрд╛рд╕ + рдХреНрд▓реЗрд░.рдЬреЗрдПрд╕ рдХреЛ рдкрд╣рд▓реЗ рдкреНрд▓рдВрдХрд░ рд╢реЛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

import { Directive } from '@angular/core';
import { GoogleMapsAPIWrapper } from 'angular2-google-maps/core';
import { GoogleMap, Marker } from 'angular2-google-maps/core/services/google-maps-types';
// npm install js-marker-clusterer --save
import 'js-marker-clusterer/src/markerclusterer.js';

declare const google;
declare const MarkerClusterer;

@Directive({
  selector: 'googlemap-directive'
})



export class GoogleMapDirective {

  googleMarkers : any;
  _map: any;

  zoom: number = 3;
  lat: number = 51.673858;
  lng: number = 7.815982;

  markers: marker[] = [
      {
          lat: 51.673858,
          lng: 7.815982
      },
      {
          lat: 51.373858,
          lng: 7.215982
      },
      {
          lat: 51.723858,
          lng: 7.895982
      }
  ]

   initMarkers(){
    let i = 0;
    let markers = this.markers;
    var result = [];
    for ( ; i < markers.length; ++i ){
       result.push( new google.maps.Marker({
            position : markers[ i ] 
        })
       );
    }
    return result;
  }



  constructor (private gmapsApi: GoogleMapsAPIWrapper) {
    var me = this;
    this.gmapsApi.getNativeMap().then(map => {
      // instance of the map.
      me._map = map;
      me.initializeMap();
    });
  }

  initializeMap(){
      var me = this;
      me.googleMarkers = me.initMarkers();
      var mc = new MarkerClusterer( me._map, me.googleMarkers, { imagePath: 'https://googlemaps.github.io/js-marker-clusterer/images/m' } );
  }

}

interface marker {
    lat: number;
    lng: number;
}

рд▓реЛрдб рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рджреЛ рдмрд╛рд░ рдПрдВрдЧреБрд▓рд░ 2-рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рд╕реЗ рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдШрдЯрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдЬреЛрдбрд╝реЗрдВ

import {OnInit, Component  } from '@angular/core';

import { SebmGoogleMap, MapsAPILoader, NoOpMapsAPILoader  } from 'angular2-google-maps/core';

@Component({
    selector: 'site-map',
    templateUrl: './site-map.component.html',
    styleUrls: ['./site-map.component.css'],
  providers: [
    {
      provide: MapsAPILoader, useClass: NoOpMapsAPILoader
    }
  ],
})

рдЕрдкрдиреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

<sebm-google-map #sitemap
  [disableDefaultUI]="false"
  [zoom] = "zoom"
  [zoomControl]="true" 
  [latitude]="lat" [longitude]="lng">
  <!--
  <sebm-google-map-marker 
      *ngFor="let m of markers; let i = index"
      (markerClick)="openDetail(m)"
      [latitude]="m.lat"
      [longitude]="m.lng"
      [label]="m.label"

      [markerDraggable]="m.draggable"
      [iconUrl]="'assets/img/marker.png'"
      (dragEnd)="markerDragEnd(m, $event)">

    <sebm-google-map-info-window [disableAutoPan]="true" (infoWindowClose)="onCloseDetail.emit()">
      <h5>{{m.address}}</h5>
      <div>{{m.city}}, {{m.state}}, {{m.country}}</div>
    </sebm-google-map-info-window>    
  </sebm-google-map-marker>
  -->
  <googlemap-directive></googlemap-directive>
</sebm-google-map>

image

@jpcode
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдХреЛрдгреАрдп 2-рдЧреВрдЧрд▓-рдореИрдкреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдореИрдкреНрд╕ рдПрд╕рдбреАрдХреЗ рджреЛ рдмрд╛рд░ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВ рд╕рд┐рд░реНрдл рдПрдЧреНрдо рдХреЛ рдЙрддрдирд╛ рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рддрдирд╛ рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд┐рд░реНрдл рдЬрд░реВрд░реА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдЦреБрдж рдХрд░рддрд╛ рд╣реИред

@ siegerx3
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ рдирд░рдХ smрей
рдореИрдВ рдПрдХ рдХрд▓ рдмрдирд╛рдКрдВрдЧрд╛ рдЕрдЧрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ :)
рдХреНрдпрд╛ рдЖрдк рдХреЛрдгреАрдп-рдХреНрд▓рд┐ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ? рдЕрдиреНрдпрдерд╛ рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдореВрд▓ рдПрдХ рдХрд░реВрдБрдЧрд╛ред

@ siegerx3
рд╣рд╛рдБ, рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ ... рдореИрдВ рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ + рдорд╛рд░реНрдХрд░ рдХреНрд▓рд╕реНрдЯрд░рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░реАрдХрд░рдг рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореИрдВ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдЬрд╛рдп, рдХреЛрдгреАрдп 2-рдЧреВрдЧрд▓-рдореИрдк ... рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП tnx рдмрд╣реБрдд

@ рдирд░рдХ smрей
https://drive.google.com/open?id=0B4y4KJY7l3rPNTdqR0hyNTRqVHc

рдмрд╕ npm install рдФрд░ ng serve ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдгреАрдп-рдХреНрд▓рд┐ npm install angular-cli -g рдкрд╣рд▓реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИред

рдпрд╛рдж рд░рдЦреЗрдВ, рдпрд╣ рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореИрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдХреНрд▓рд╕реНрдЯрд░ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рд╕реНрд╡рд░реВрдкрдг рдЕрдЬреАрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдкрд░рдорд╛рдгреБ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрдкрд╛рджрдХ ^ ^ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛

@ siegerx3
рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗ :)

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрджреНрдпрддрди рдХреЛрдгреАрдп 2 рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ im рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

@SteveDowsett
рдЖрдк рдЕрднреА рднреА рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :)
рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ

@ рдирд░рдХ smрей
Btw рдиреЗ рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛? рдХреНрдпрд╛ рдЗрд╕рдиреЗ рдЖрдкрдХреА рдорджрдж рдХреА?

@ siegerx3
рд╣рд╛рдВ, рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рдорджрдж рдорд┐рд▓реАред Tnx!

@ siegerx3

рдореИрдВрдиреЗ рд╕реНрд╡рдпрдВ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрджреЛрд╕!

рд▓реЗрдХрд┐рди рдЕрдм рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВрдиреЗ рдПрдХ рдЕрджреНрдпрддрди рд╕рд░рдгреА рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП ngOnChanges рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдореИрдВ рд╕рд░рдгреА рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рд╕рд░рдгреА рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рддреА рд╣реИ рддреЛ рдорд╛рд░реНрдХрд░ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред

рдХреЛрдИ рд╕реБрдЭрд╛рд╡?

@nanomoffet
рдпрд╣ рдорджрдж рдХреА рдорд╣рд╛рди!

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рдЙрд╕реА / рд╕рдорд╛рди рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рд╕рдордп рдирд╣реАрдВ рдерд╛ред

рдореИрдВ рдпрд╣рд╛рдБ рдкреЛрд╕реНрдЯ рдХрд░реВрдБрдЧрд╛ рдЬрдм рдореИрдВрдиреЗ рдХреБрдЫ рдкрд╛рдпрд╛ред

рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдХреЗ рдореБрджреНрджреЗ рдХрд╛ рд╣рд▓ рдорд┐рд▓рд╛ред

        .interval(100)
        .take(1)
        .subscribe(() => {
        if(this.markerCluster) {
          this.markerCluster.clearMarkers();
        }
          if (this.points.length > 0) {
            for (let point of this.points) {
              let marker = new google.maps.Marker({
                position: new google.maps.LatLng(point.Latitude, point.Longitude),
                icon : markerIcon
              });
              this.markers.push(marker);
            }
          } else {
            this.markers = [];
          }
          this.markerCluster = new MarkerClusterer(map, this.markers, options);

        });

рдореИрдВрдиреЗ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЗ рдмрд╛рд╣рд░ рдорд╛рд░реНрдХрд░ рдХреНрд▓рд╕реНрдЯрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдЕрдЧрд░ рдпрд╣ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рддреЛ рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреНрд▓реАрдорд░рдХрд╛рд░ () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдирдХреНрд╢реЗ рд╕реЗ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдорд╛рд░реНрдХрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рд╕рд░рдгреА рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рд╕рд░рдгреА рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рддрд░реНрдХ) ) рдХрд╛ рд╣реИред

рдпрд╣ рдореЗрд░рд╛ рдореБрджреНрджрд╛ рддрдп рдХрд░ рджрд┐рдпрд╛, рд╢рд╛рдпрдж рдпрд╣ рдЖрдкрдХреА рднреА рдорджрдж рдХрд░реЗрдЧрд╛ @ siegerx3

@nanomoffet

рдореИрдВ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗ рдЬрдм рдореИрдВ рдЙрд╕ рднрд╛рдЧ рдкрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо, рдзрдиреНрдпрд╡рд╛рдж :)

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдЗрд╕ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдореИрдВ рдПрдХ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ getNativeMap рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛
рдореИрдВ рдПрдХ рдирдХреНрд╢рд╛ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
<sebm-google-map> <mapmenu-component></mapmenu-component>
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдмрдХреЛрдореНрдкреЛрдиреЗрдВрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ
рдпрд╣ html рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
<div class="sebm-google-map-content" _ngcontent-rgy-8="">
рдЬреЛ рдПрдХ рдЕрджреГрд╢реНрдп рдШрдЯрдХ рд╣реИ

рдХреНрдпрд╛ рдореИрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рд╕реЗ sebm-google-map рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ html рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ?
рдореИрдВ рдЗрд╕реЗ html рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдУрд╡рд░рд▓реЗрд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореИрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ 2 рдШрдЯрдХреЛрдВ (рдирд┐рд░реНрджреЗрд╢ + рдШрдЯрдХ) рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛
1.) рдПрдХ рдЬреЛ sebm-google-map рдХреЗ рдЕрдВрджрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдкреАрдЖрдИ рдЕрднрд┐рдЧрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ
2.) рдПрдХ рдЬреЛ sebm-google-map рдХреЗ рдмрд╛рд╣рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ HTML рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ)

рд╣рд╛рдп рдЯреАрдо,
@ siegerx3 рдореИрдВрдиреЗ https://drive.google.com/open?id=0B4y4KJY7l3rPNTdqR0hyNTRqVHc рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВрддрдерд╛ред рдореИрдВ рдЬреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдХреНрд▓рд╕реНрдЯрд░ + рдорд╛рд░реНрдХрд░ рд▓реЗрдмрд▓ + рд╕реВрдЪрдирд╛ рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдореИрдВ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдорд╛рд░реНрдХрд░ рд▓реЗрдмрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдПрдХ рд╕реВрдЪрдирд╛ рд╡рд┐рдВрдбреЛ рдкреЙрдк рдЕрдк рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдореИрдВ рдЗрд╕ рдХрд╛рдо @SebastianM рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@ рдкреНрд░рдХрд╛рд╢рдкреНрд░рдХрд╛рд╢
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдЕрднреА рддрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдк рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдорд╛рд░реНрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдореВрд▓ рдореИрдкреНрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рдХрд╕реНрдЯрдо рдШрдЯрдХ рдореЗрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдорддрд▓рдм, рд▓реЗрдмрд▓ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдВрдбреЛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╡реЗрдирд┐рд▓рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред

@ рдкреНрд░рдХрд╛рд╢рдкреНрд░рдХрд╛рд╢

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреБрдж рдЗрд╕реА рдЪреАрдЬ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП MarkerClustererPlus рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдФрд░ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕реНрд╡рдпрдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдВрдбреЛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

        .interval(100)
        .take(1)
        .subscribe(() => {
        if (this.markerCluster) {
          this.markerCluster.clearMarkers();
          this.markers = [];
        }
          if (this.points.length > 0) {
            for (let point of this.points) {
              let marker = new google.maps.Marker({
                position: new google.maps.LatLng(point.Latitude, point.Longitude),
                icon : markerIcon,
                title: 'this is a title'
              });
              marker.addListener('mouseover', function() {
                infowindow.open(map, marker);
              });
              marker.addListener('mouseout', function() {
                infowindow.close(map, marker);
              });
              this.markers.push(marker);
            }
          } else {
            this.markers = [];
            if (this.markerCluster) {
              this.markerCluster.clearMarkers();
            }
          }
          this.markerCluster = new MarkerClusterer(map, this.markers, options);
          google.maps.event.addListener(this.markerCluster, 'mouseover', function(cluster) {
            let content = 'Cluster Window';
            let info = new google.maps.MVCObject;
            let clusterInfowindow = new google.maps.InfoWindow();

            clusterInfowindow.setContent(content);
            clusterInfowindow.open(map, info);
            clusterInfowindow.setPosition(cluster.getCenter());
            google.maps.event.addListener(map, 'zoom_changed', function() { clusterInfowindow.close(); });
          });

        });

рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛ рдХреЛ рдХреИрд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдП - рд╡реЗ рдирдХреНрд╢реЗ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдкрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдХреНрд▓рд╕реНрдЯрд░ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдирд╣реАрдВред

рдХрд┐рд╕реА рдХреЛ рднреА рдкрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдХреЛрдгреАрдп 2 рдореЗрдВ рд╡реЗрдкреЙрдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рдВрджрд░реНрднрд┐рдд " https://developers.google.com/maps/documentation/javascript/reference#DirectionsWaypoint " рдХреЗ рд░реВрдк рдореЗрдВ lat рдФрд░ lng рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@naranmistry рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдкрдХреА рдпреЛрдЬрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдХрд┐рд╕реА рдФрд░ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ?

рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рд╡реЗрдирдкреЙрдЗрдВрдЯ рдореЗрдВ рд▓реИрдВрдЧ рдФрд░ рд▓рд╛рдЯ рд╡реИрд▓реНрдпреВрдЬрд╝ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдпрд╣ рдПрдВрдЧреБрд▓рд░ 2-рдЧреВрдЧрд▓-рдореИрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рджреЗрд╢рд╛рдВрддрд░ рдФрд░ рдЕрдХреНрд╖рд╛рдВрд╢ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдЯреЙрдк рдУрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рд░реНрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХрдиреЗрдХреНрдЯрд┐рдиреЛ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдк рдкреНрд░рд▓реЗрдЦрди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ location Type: string|LatLng|Place рдХрд╣рддрд╛ рд╣реИред рддреЛ рд╣рд╛рдБ рдЖрдк Google рдореИрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ LatLng рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рд▓реЗрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╣реА рдЪрд╛рд╣рд┐рдП?

рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рдХреНрдпрд╛ рд▓реЗрдЯ рдФрд░ рд▓реИрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдкреЙрдЗрдВрдЯреНрд╕ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ?

рдЗрд╕ рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдХрд┐ рдореБрдЭреЗ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдкреНрд▓рдВрдХрд░ рдХреА рддрд░рд╣, рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВ :)

рдареАрдХ рд╣реИ, рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдПрдХ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦреВрдБрдЧрд╛

рдзрдиреНрдпрд╡рд╛рдж

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдХреНрдпрд╛ рдореИрдВ _click event_ рдХреЛ _infowindow_ рдХреЗ рдЕрдВрджрд░ _marker-рдХреНрд▓рд╕реНрдЯрд░_ рдХреЗ рдирд┐рд░реНрджреЗрд╢рди рдореЗрдВ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдХрд░ рдХреЗ рд▓рд┐рдП _sebm-google-map-info_ рдШрдЯрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдзрдиреНрдпрд╡рд╛рдж!

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ @fsciutiред
рдХреНрдпрд╛ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ ?

рдЪреВрдБрдХрд┐ agm-maps рдЕрднреА рднреА рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ @ siegerx3 рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛, рдорд╛рд░реНрдХрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдорд╛рд░реНрдХрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЙрджрд╛рд╣рд░рдг @nanomoffetред рдЕрдЪреНрдЫрд╛ рдХрд╛рдо! рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдиреЗ рдмрд╣реБрдд рдорджрдж рдХреАред

рдХреБрдЫ рд╡рд╛рдкрд╕ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдВрдХ рдХреЗ рддрд╣рдд @ siegerx3 рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдПрдХ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ:

https://drive.google.com/open?id=0B51AX67ezltoOFdSNTQ1NlQ4SU0

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЧрдП рд╣реИрдВ:

  • рдХреЛрдгреАрдп 4.1 рдФрд░ @agm/core рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдирд┐рд░реНрднрд░рддрд╛рдПрдБ
  • рдЕрджреНрдпрддрд┐рдд рдХреЛрдб рдХреЛрдгреАрдп 4.1 рдФрд░ @agm/core рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдЬреЛрдбрд╝рд╛ рдорд╛рд░реНрдХрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ
  • рдЬреЛрдбрд╝рд╛ рдорд╛рд░реНрдХрд░ рдЬрд╛рдирдХрд╛рд░реА рдЦрд┐рдбрд╝рдХреА рдЙрджрд╛рд╣рд░рдг
  • рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдб рд╢реИрд▓реА

@andorfermichael рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЖрджрдореА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдорд╣рд╛рди рд╣реИрдВ! рдПрдХ рдкреНрд░рд╢реНрди рдХреГрдкрдпрд╛: рдпрджрд┐ рдореИрдВ рдирд┐рд░реНрджреЗрд╢рди (рджреЛрдиреЛрдВ рдорд╛рд░реНрдХрд░ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░) рдХреА рд╕реНрдЯрд╛рдЗрд▓ рдХреЛ рдмрд╛рд╣рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рдмрд╕ рдЗрд╕реЗ рдПрдХ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЛ рд╡рд┐рдХрд▓реНрдк рдФрд░ рд╢реИрд▓реА рд╣реИ, рдЙрд╕рдХреЗ рд╕рд╛рде рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рдП ...

@picosam

рдЖрдкрдХреЛ рдИрдПрд╕ 6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ:

_google-maps.config.ts_

export const markerIcon = {
  url: '/assets/marker.png', // url
  scaledSize: new google.maps.Size(35, 35)
};

const style = {
  url: '/assets/cluster.png',
  height: 40,
  width: 40,
  textColor: '#FFF',
  textSize: 11,
  backgroundPosition: 'center center'
};

export const options = {
  imagePath: '/assets/cluster',
  gridSize: 70,
  styles: [style, style, style]
};

рдФрд░ рдлрд┐рд░ _marker-рдХреНрд▓рд╕реНрдЯрд░.ts_ рдореЗрдВ рдЙрди рдЪрд░ / рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ:

import { markerIcon, options } from './google-maps.config';

@andorfermichael рдбреИрдВрдХ рдиреЛрдЪ
рдмреЗрд╢рдХ рдореИрдВ рддрдм рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЬрдЯрд┐рд▓ рдЖрдЗрдХрди рдФрд░ рд╕рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдирд╡реАрдирддрдо Google рдореИрдкреНрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рд╕рд╣реА рд╣реИ?

@picosam рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ

@andorfermichael рдпрд╣ рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдХрд╛рд░реНрдп рд╣реИ
рд▓реЗрдХрд┐рди рдореИрдВ рдереЛрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореБрдЭреЗ infowindow рдкрд░ рдПрдХ рдХреНрд▓рд┐рдХ рджреНрд╡рд╛рд░рд╛ рджреВрд╕рд░реЗ рдорд╛рд░реНрдЧ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди infowindow рдореЗрдВ рдПрдХ рдХреНрд▓рд┐рдХ рдИрд╡реЗрдВрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ "рдХреНрд▓реЛрдЬрдХреНрд▓рд┐рдХ" рдЗрд╡реЗрдВрдЯ рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдпрд╣рд╛рдВ рдХреЛрдб рд╣реИ

infowindow.addListener('closeclick', function () { this.router.navigate(['/blabla', id]); });

рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ infowindow рдХреНрд▓реЛрдЬ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдИрд╡реЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдПрд░рд░ рдлреЗрдВрдХрддрд╛ рд╣реИ
this.router is undefined

_ рдмреЗрд╢рдХ рдХреЛрд░реНрд╕ рдореЗрдВ рд░рд╛рдЙрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдВрдкреЛрд░реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рд░рд╛рдЙрдЯрд░ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░_ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рдФрд░ рддрдХрдиреАрдХ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдореИрдВрдиреЗ рдореВрд▓ рдШрдЯрдХ рдФрд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмреАрдЪ рдИрд╡реЗрдВрдЯрдорд┐рдЯрд░ (рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рддрдХрдиреАрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рд╡рд░реНрдЧ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ @Output() eventEmitter = new EventEmitter() рдХреЛ рд╢реАрд░реНрд╖ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛,
рдФрд░ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдШрдЯрдирд╛,

infowindow.addListener('closeclick', function () { this.eventEmitter(id); });

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ infowindow рдХреНрд▓реЛрдЬ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдИрд╡реЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдПрд░рд░ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИ
this.eventEmitter is undefined

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

@ hossam-maurice рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ this рджреНрд╡рд╛рд░рд╛ caued рд╣реИред рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ this рд╡рд╣ рддрддреНрд╡ рд╣реИ рдЬрд┐рд╕рдиреЗ рдШрдЯрдирд╛ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ - infowindowред рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ, ES6 / ECMAScript2015 рдореЗрдВ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ this рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрд╕рдкрд╛рд╕ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВред
рддреЛ infowindow.addListener('closeclick', () => { this.eventEmitter(id); }); рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдЧреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдПрдХ рдирдЬрд╝рд░ рд╣реИ: ExploringJS - рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдПрдордбреАрдПрди - рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕

@andorfermichael рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛: рдбреА hael

рд╣реИрд▓реЛ, рдореИрдВрдиреЗ Google рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдХрд╕реНрдЯрдо рдорд╛рд░реНрдХрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдПрдХ рдорд╛рд░реНрдХрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдФрд░ рдПрдХ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЛрдбрд▓ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдХреНрд▓рд┐рдХ рдкрд░ рдПрдХ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдЕрд▓рд░реНрдЯ рджрд┐рдЦрд╛рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЛрдбрд▓ рдХреЛ рдкреЙрдк рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдзрдиреНрдпрд╡рд╛рдж :)

рдирдорд╕реНрдХрд╛рд░, рдореИрдВрдиреЗ рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдВрдбреЛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреНрд▓рд┐рдХ рдЗрд╡реЗрдВрдЯ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИ?

@andorfermichael
рд╣рд╛рдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд▓рд╕реНрдЯрд░ рд░рдВрдЧреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рдХрд┐ рд▓рд╛рд▓, рдкреАрд▓рд╛ рдФрд░ рдиреАрд▓рд╛ред
рд╕рдзрдиреНрдпрд╡рд╛рдж

@ vugar005 рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд░рдВрдЧ рдмрджрд▓рдиреЗ рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдЖрдк рдмрд╕ рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдЫрд╡рд┐ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, Google рдХреА рдорд╛рд░реНрдХрд░ рдХреНрд▓рд╕реНрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА m1 рд╕реЗ m5 (m = рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдирд╛рдо рдХреА рдкрд╛рдВрдЪ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЫрд╡рд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдкреНрд░рддрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдХрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдореБрдЭреЗ рд╕рдЯреАрдХ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред Google рдбреЗрд╡рд▓рдкрд░ MapsDocumentation рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рдБрдЪ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╕реНрдЯрд░ 1 рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ 5 рдореЗрдВ рдирд╛рдо рджреЗрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрддреНрддрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рд░рдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ред

@AlexisNi рдЖрдк рдЬрдм рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рджрдмрдВрдЧ рдШрдЯрдирд╛ рдХреЛ рд╕реБрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

InfoWindow рдХреА рд╕рд╛рдордЧреНрд░реА DOM рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИред
google.maps.event.addListener(infoWindow, 'domready', function() {
  document.getElementById('info-window-button').addEventListener('click', function(){
    // run code here
  });
});

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП Google рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореИрдкреНрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ

@joaolbaptista рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди Google рдореИрдк рдорд╛рд░реНрдХрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХрд╛ рдкреНрд░рд╢реНрди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдСрдл-рдЯреЙрдкрд┐рдХ рд╣реИред рдореИрдВ рдПрдХ рд╣реА рд╕рд╡рд╛рд▓ (рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд) stackoverflow рдореЗрдВ рдкреВрдЫрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡

@andorfermichael I рдХрд╛ рдЕрд░реНрде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдЗрдХрди рдмрджрд▓рдирд╛ рд╣реИред рддреЛ рдЗрд╕рд▓рд┐рдП рдореИрдВ рджреЗрд╢реА рдЧреВрдЧрд▓ рд╡реЗрдм рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдирдХреНрд╢реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред
рдлрд┐рд░ рднреА рдзрдиреНрдпрд╡рд╛рдж

@ vugar005 рдпрд╣реА рдореИрдВрдиреЗ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЗрд╢реА рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдПрдкреА рдХреЗрд╡рд▓ рдкрд╛рдВрдЪ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╕реНрдЯрд░ 1 (рдПрдо 1) 0 - 10, рдХреНрд▓рд╕реНрдЯрд░ 2 (рдПрдо 2) 11 - 100 рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рдирдорд╕реНрдХрд╛рд░ @andorfermichael , рдХреНрдпрд╛ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХреБрд▓ рдХреЗ рдЙрдиреНрдирдпрди рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЕрдЪрд╛рдирдХ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ:

ReferenceError: MarkerClusterer is not defined
    at SafeSubscriber._next (marker-clusterer.ts:106)
    at SafeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
    at SafeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.next (Subscriber.js:185)
    at Subscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber._next (Subscriber.js:125)
    at Subscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at SkipWhileSubscriber.webpackJsonp.../../../../rxjs/operator/skipWhile.js.SkipWhileSubscriber._next (skipWhile.js:52)
    at SkipWhileSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at TakeSubscriber.webpackJsonp.../../../../rxjs/operator/take.js.TakeSubscriber._next (take.js:80)
    at TakeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at AsyncAction.webpackJsonp.../../../../rxjs/observable/IntervalObservable.js.IntervalObservable.dispatch (IntervalObservable.js:70)

@picosam рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдореБрджреНрджрд╛ рдкрд╣рд▓реЗ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдорд╛рд╕реНрдЯрд░рдХреНрд▓рд╕реНрдЯрд░ рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХреА рдпрд╛ рдорд╛рд╕реНрдЯрд░рдХреНрд╕реНрдЯрд░ рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рдорд╛рд╕реНрдЯрд░рдХреНрд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @ vugar005 - рдмрд╛рдд рдпрд╣ рд╣реИ, рдореИрдВрдиреЗ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЙрд╕ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рдЫреБрдЖ рд╣реИ! .js рдлрд╝рд╛рдЗрд▓ рдореЗрд░реЗ .angular-cli.json рдФрд░ рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдореЗрд░реЗ .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ import * as ... рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ рдЬрдм рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ import рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддреЛ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рдХрд┐ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ!

@picosam рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХреАред

рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдирдП @ agm / js-рдорд╛рд░реНрдХрд░-рдХреНрд▓рд╕реНрдЯрд░ рдкреИрдХреЗрдЬ (# 1044) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ

@SebastianM рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХреЛрдгреАрдп-рдЧреВрдЧрд▓-рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд┐рдХ рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЙрд╕реА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

@andorfermichael рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ! рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЧреВрдЧрд▓ рдореИрдкреНрд╕ рдПрдкрд┐ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд░рд╣рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ Google рдирд╣реАрдВ рдорд┐рд▓рд╛ рдпрд╛ рдорд╛рд░реНрдХрд░ рдХреНрд▓рд╕реНрдЯрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЖрджрд┐ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

@jpcode рд╣рд╛рдп рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдХрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдмрд╛рдХреА рд╢рд╛рдо рдХреЛ рднреА рдЬреЛ рд╣рдо рдПрдЧреНрдо-рдорд╛рд░реНрдХрд░ рдореЗрдВ рд╣реИрдВред рд╡рд╣рд╛рдБ рдПрдЬреАрдПрдо рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ? рдпрд╛ рдЖрдкрдХреЗ рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдПрдЧреНрдо-рдорд╛рд░реНрдХрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП?

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

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

nthonymiller picture nthonymiller  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

supran2811 picture supran2811  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

shedar picture shedar  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ