Angular-google-maps: AGM mapClick ($ рдШрдЯрдирд╛) рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдЬреБрд▓ре░ 2020  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: SebastianM/angular-google-maps

рдореИрдВрдиреЗ рдЧреЗрдЯрд┐рдВрдЧ рд╕реНрдЯрд╛рд░реНрдЯреЗрдб рдПрдЬреАрдПрдо рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдмрдирд╛рдпрд╛: https://angular-maps.com/guides/getting-started/

рдореИрдВрдиреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд▓рд┐рдпрд╛:
"@ рдХреЛрдгреАрдп / рдХреЛрд░": "~ 10.0.0"
рддрдерд╛
"@ agm / core": "^ 3.0.0-beta.0"

App.component.html рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛:


App.component.ts рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛:
рдирд┐рд░реНрдпрд╛рдд рд╡рд░реНрдЧ AppComponent {
рд╢реАрд░реНрд╖рдХ = 'gbis';
lat = 51.678418;
lng = 7.809007;

mapClick(e) {
    console.log(e);
}

}

App.component.css рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛:
agm-map {
рдКрдВрдЪрд╛рдИ: 300 рдкреАрдПрдХреНрд╕;
}

рдЬрдм рдореИрдВ рдЗрд╕ рдРрдк рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореИрдк рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЯреАрдПрд╕ рдлрд╛рдЗрд▓ рдлрдВрдХреНрд╢рди рдореИрдк рдореЗрдВ рдореИрдк рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (рдИ) рдореИрдВ рдИ = "рдП" рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖред

рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП!

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

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рд╢реНрд░реЛрддрд╛ рдХреЛ Google рдорд╛рдирдЪрд┐рддреНрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

<agm-map [latitude]="position.lat"
         [longitude]="position.lng"
         [zoom]="zoom"
         (mapReady)="mapReadyHandler($event)">
</agm-map>
public mapReadyHandler(map: google.maps.Map): void {
  this.map = map;
  this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
    this.zone.run(() => {
      // Here we can get correct event
      console.log(e.latLng.lat(), e.latLng.lng());
    });
  });
}

public ngOnDestroy(): void {
  if (this.mapClickListener) {
    this.mapClickListener.remove();
  }
}

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

рдЗрд╕ рдлрд┐рдХреНрд╕ рдкрд░ рдИрдЯреАрдП? рдпрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб?

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

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

рдПрдХ рд╣реА рдореБрджреНрджрд╛, рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ?

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

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

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

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

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

рд╣рд╛рдВ, рдкрд┐рдЫрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 1.1.0 (8 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ) рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

# 1847 рдкрд░ рд╕рд░рд▓ рд╕реБрдзрд╛рд░, @SebastianM рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ

рдореИрдВ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред MapClick рдореЗрдВ $ рдШрдЯрдирд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ "c" рд▓реМрдЯрд╛рддреА рд╣реИред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдЬрдм рдпрд╣ рддрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛? рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЙрдкрд╛рдп?

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рд╢реНрд░реЛрддрд╛ рдХреЛ Google рдорд╛рдирдЪрд┐рддреНрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

<agm-map [latitude]="position.lat"
         [longitude]="position.lng"
         [zoom]="zoom"
         (mapReady)="mapReadyHandler($event)">
</agm-map>
public mapReadyHandler(map: google.maps.Map): void {
  this.map = map;
  this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
    this.zone.run(() => {
      // Here we can get correct event
      console.log(e.latLng.lat(), e.latLng.lng());
    });
  });
}

public ngOnDestroy(): void {
  if (this.mapClickListener) {
    this.mapClickListener.remove();
  }
}

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

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

рд╣рд╛рдВ, рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг 1.1.0 (8 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ) рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 1.1.0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб npm i @ [email protected] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдпрд╣ рдХрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

"@ Agm / core" рдкрд░ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рдкрд░: "^ 3.0.0-beta.0"

@ egorkel-da14 рдореИрдВ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
Uncaught TypeError: Cannot read property 'run' of undefined
this.zone.run(...) рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп

рдХреНрдпрд╛ рдореБрдЭрд╕реЗ рдХреЛрдИ рдЪреВрдХ рд╣реЛ рд░рд╣реА рд╣реИ?

рдЕрджреНрдпрддрди: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрд╕ рд▓рд╛рдЗрди рдХреЛ рдЫреЛрдбрд╝рддреЗ рд╕рдордп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

    public mapReadyHandler(map: google.maps.Map): void {
        this.map = map;
        this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
            console.log(e.latLng.lat(), e.latLng.lng());
        });
    }

@ egorkel-da14 рдореИрдВ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
Uncaught TypeError: Cannot read property 'run' of undefined
this.zone.run(...) рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп

рдХреНрдпрд╛ рдореБрдЭрд╕реЗ рдХреЛрдИ рдЪреВрдХ рд╣реЛ рд░рд╣реА рд╣реИ?

рдЕрджреНрдпрддрди: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрд╕ рд▓рд╛рдЗрди рдХреЛ рдЫреЛрдбрд╝рддреЗ рд╕рдордп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

    public mapReadyHandler(map: google.maps.Map): void {
        this.map = map;
        this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
            console.log(e.latLng.lat(), e.latLng.lng());
        });
    }

рд╣рд╛рдБ :)
рдЖрдкрдХреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ NgZone рд╕реЗрд╡рд╛ рдЗрдВрдЬреЗрдХреНрд╖рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

constructor(private zone: NgZone) {}

рдХреЛрдгреАрдп рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ (рдЙрдЪрд┐рдд рджреГрд╢реНрдп рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП) рдХреЗ рдЙрдЪрд┐рдд рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
@ рдЕрдВрд╢реА

рдХреЙрд▓ event.latLng.lat () рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
modDragEnd ($ рдШрдЯрдирд╛: рдХреЛрдИ рднреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ($ event.latLng.lat (), $ event.latLng.lng ());
}

рдореБрдЭреЗ рдРрдбрдкрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЛрдХреЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирдХреНрд╢реЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг 3.0.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ рдкрд┐рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ? (рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 1.1.0 рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ)

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

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

рд╣рд╛рдВ, рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг 1.1.0 (8 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ) рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 1.1.0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб npm i @ [email protected] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХреЛрдгреАрдп 10 рдХреЗ рд╕рд╛рде?

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рд╢реНрд░реЛрддрд╛ рдХреЛ Google рдорд╛рдирдЪрд┐рддреНрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ

<agm-map [latitude]="position.lat"
         [longitude]="position.lng"
         [zoom]="zoom"
         (mapReady)="mapReadyHandler($event)">
</agm-map>
public mapReadyHandler(map: google.maps.Map): void {
  this.map = map;
  this.mapClickListener = this.map.addListener('click', (e: google.maps.MouseEvent) => {
    this.zone.run(() => {
      // Here we can get correct event
      console.log(e.latLng.lat(), e.latLng.lng());
    });
  });
}

public ngOnDestroy(): void {
  if (this.mapClickListener) {
    this.mapClickListener.remove();
  }
}

рдЗрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ, рдорд╣рд╛рди рджрд┐рди рд╣реИ

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

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

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

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

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

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

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