рдореИрдВрдиреЗ рдЧреЗрдЯрд┐рдВрдЧ рд╕реНрдЯрд╛рд░реНрдЯреЗрдб рдПрдЬреАрдПрдо рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдмрдирд╛рдпрд╛: 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 рдкреАрдПрдХреНрд╕;
}
рдЬрдм рдореИрдВ рдЗрд╕ рдРрдк рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореИрдк рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЯреАрдПрд╕ рдлрд╛рдЗрд▓ рдлрдВрдХреНрд╢рди рдореИрдк рдореЗрдВ рдореИрдк рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (рдИ) рдореИрдВ рдИ = "рдП" рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдИ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖред
рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП!
рдЗрд╕ рдлрд┐рдХреНрд╕ рдкрд░ рдИрдЯреАрдП? рдпрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб?
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдПрдХ рд╣реА рдореБрджреНрджрд╛, рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ?
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВ рдЕрдм рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддрдЪреАрдд рдХреЛ рдирдХрд╛рд░рдирд╛
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВ рдЕрдм рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддрдЪреАрдд рдХреЛ рдирдХрд╛рд░рдирд╛
рд╣рд╛рдВ, рдкрд┐рдЫрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 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(); } }
рдЗрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ, рдорд╣рд╛рди рджрд┐рди рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рд╢реНрд░реЛрддрд╛ рдХреЛ Google рдорд╛рдирдЪрд┐рддреНрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ