рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрд╣реБрдд рджрд┐рдиреЛрдВ рд╕реЗ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реВрдВ, рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдпрд╣рд╛рдБ рдореЗрд░рд╛ @NgModule рд╣реИ:
import { NgModule } from '@angular/core';
import { AgmCoreModule } from 'angular2-google-maps/core/index';
// Global vars
import appGlobals = require('./../globals');
@NgModule({
imports: [ AgmCoreModule.forRoot({
apiKey: appGlobals.googleMapsApiKey
}) ],
})
export class JobSearchModule {}
рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдПрдЪрдЯреАрдПрдордПрд▓ рд╣реИ:
<div class="col-md-12 google-maps-container">
<sebm-google-map [latitude]="mapLat"
[longitude]="mapLng"
[mapDraggable]="false"
[zoom]="zoom"
[zoomControl]="false"
[streetViewControl]="false"
(mapClick)="mapClicked($event)">
<sebm-google-map-marker [latitude]="mapLat"
[longitude]="mapLng">
</sebm-google-map-marker>
</sebm-google-map>
</div>
рдФрд░ рдореЗрд░реЗ рдПрдЪрдЯреАрдПрдордПрд▓ рд╣реЗрдб рдЯреИрдЧ рдХреЗ рдЕрдВрджрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ:
рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдмрд╛рд░ рдПрдкреАрдЖрдИ рд╕рд╣рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ рдпрд╛ рдХреИрд╕реЗред
@escarabin рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЪрд╛рдЗрд▓реНрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдЗрд╕реЗ рдРрдк рдХреЗ рдЕрдкрдиреЗ рд░реВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдмрдЧ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдзрдиреНрдпрд╡рд╛рдж!
рдЕрд░реЗ @SebastianM! рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдпрд╣рд╛рдБ рдореЗрд░реА рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
job-search-module.ts
. рдирд╛рдордХ рдЪрд╛рдЗрд▓реНрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ angular2-google-maps рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИshared.module.ts
рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдШрдЯрдХ рдФрд░ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдХрдИ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд░рддрд╛ рд╣реВрдВредapp.module.ts
рд╣реИрдЕрдм, рдЬрдм рдореИрдВ рдЕрдкрдиреЗ app.module.ts рдореЗрдВ AgmCoreModule рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдПрдХ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдХрд┐ sebm-google-map
рдореЗрд░реЗ job-search-module.ts
рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдИ рдирдХреНрд╢рд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЬрдм рдореИрдВ AgmCoreModule рдХреЛ shared.module.ts
рдпрд╛ job-search.module.ts
рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ _"рдЖрдкрдиреЗ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдХрдИ рдмрд╛рд░ Google рдорд╛рдирдЪрд┐рддреНрд░ API рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ"_ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
рддрдм рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдкреБрдирд╢реНрдЪ: рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ
рдХрд┐рд╕реА рдХреЛ? :( рдореИрдВ рдЕрднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдБ
@escarabin рдореБрдЭреЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдереАред рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗред
рдЖрдкрдХреЛ рд░реВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░реЗрдВ:
@NgModule({
declarations: [
...
],
imports: [
...,
AgmCoreModule.forRoot({
apiKey: 'some key here'
})
],
рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рдШрдЯрдХ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдпрд╣ рдХрд░реЗрдВ:
@NgModule({
declarations: [
SomeComponentThatHasMapsInItsHtml,
.....
],
imports: [
AgmCoreModule,
...
],
рдпрд╣ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореБрдЭреЗ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдЬрдбрд╝ рдореЗрдВ рдЪреАрдЬрд╝ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рддрд╛рдХрд┐ Google рд╕рд╛рдордЧреНрд░реА рдЖрдкрдХреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рд╣реЛ)ред
рд▓реЗрдХрд┐рди рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХ рдореЗрдВ <seb-maps-smth-smth>
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ AgmCoreModule рдХреЛ рдПрдХ рдЖрдпрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдирд┐рд░реНрдпрд╛рддрд┐рдд рдШрдЯрдХ рдвреВрдВрдв рд╕рдХреЗ рдЬрд┐рд╕рдореЗрдВ рдЪрдпрдирдХрд░реНрддрд╛ seb-maps-smth-smth
рд╣реЛред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ
рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @EddyP23 рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ...рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ [email protected] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ? рдпрд╣ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИред
рд╕рдорд╕реНрдпрд╛ рд╕реНрд╡рдпрдВ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ рдмрд▓реНрдХрд┐ рдпрд╣ рдкреГрд╖реНрда рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрдЧ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рднреА рдкреИрджрд╛ рдХрд░рддреА рд╣реИ ...
рд╕рд╛рде рд╣реА, рдЖрдк <seb-maps-smth-smth>
рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдореИрдВ <sebm-google-map>
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
@escarabin рд╣рд╛рдВ, рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 0.15.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
smth smth рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рдХрд┐рд╕реА рднреА seb-maps-{placeholder}
рдЪрдпрдирдХрд░реНрддрд╛ рд╕реЗ рд╣реИред рдореЗрд░рд╛ рдПрдЪрдЯреАрдПрдордПрд▓ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
<sebm-google-map #sebmGoogleMap
[latitude]="myVar1"
[longitude]="myVar2"
(idle)='onIdle()'
[zoom]='mapZoomLevel'
[streetViewControl]='false'
>
<sebm-google-map-marker #marker
[latitude]="myVar3"
[longitude]="myVar4"
></sebm-google-map-marker>
</sebm-google-map>
рдЕрдм рдЖрдк рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ? рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рд╕реЗрдЯрдЕрдк рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдк рдЕрдзрд┐рдХ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдореБрдЭреЗ рдЕрднреА рднреА "рдЖрдкрдиреЗ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдХрдИ рдмрд╛рд░ Google рдорд╛рдирдЪрд┐рддреНрд░ API рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ" рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИред
рдореЗрд░рд╛ рдПрдЪрдЯреАрдПрдордПрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
<sebm-google-map #sebmGoogleMap
[latitude]="mapLat"
[longitude]="mapLng"
[mapDraggable]="false"
[zoom]="zoom"
[zoomControl]="false"
[streetViewControl]="false"
(mapClick)="mapClicked($event)">
<sebm-google-map-marker [latitude]="mapLat"
[longitude]="mapLng">
</sebm-google-map-marker>
</sebm-google-map>
рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдмрдЪреНрдЪрд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИ:
import { NgModule } from '@angular/core';
import { jobSearchRouting } from './job-search.routes';
import { SharedModule } from './../shared/shared.module';
import { AgmCoreModule } from 'angular2-google-maps/core/index';
// Components
import { SearchComponent } from './components/search.component';
@NgModule({
declarations: [ SearchComponent ],
imports: [ jobSearchRouting,
AgmCoreModule,
SharedModule ]
})
export class JobSearchModule {}
рдФрд░ рдореЗрд░рд╛ app.module.ts @NgModule :
@NgModule({
declarations: [ AppComponent,
HomeComponent,
HeaderComponent,
FooterComponent,
PostComponent,
ClubComponent,
CandidateSignUpComponent,
PostPreviewComponent,
SignInComponent,
ProfileSubHeaderComponent,
RecruiterPromoComponent,
NotificationsComponent ],
imports: [ RouterModule,
HttpModule,
SharedModule,
BrowserModule,
AgmCoreModule.forRoot({
apiKey: appGlobals.googleMapsApiKey
}),
MetaModule.forRoot(metaConfig),
routing ],
providers: [ NotificationsService,
MetaService ],
bootstrap: [ AppComponent ],
})
рд╣рдореНрдо .. рдпрд╣ рдЕрдЬреАрдм рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд╣реАрдВ рднреА Google рдорд╛рдирдЪрд┐рддреНрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдирд╣реАрдВ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП index.html
)? рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
рдореИрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП AgmCoreModule
рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЬрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЧрд▓рддреА рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рджреЛ рдмрд╛рд░ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореБрдЭреЗ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдРрдк.рдореЙрдбреНрдпреВрд▓ рдореЗрдВ AgmCoreModule.forRoot({...}) рдЬреЛрдбрд╝рд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдХрдИ google api рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рд╣реИред
рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред
рдореБрдЭреЗ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдРрдк.рдореЙрдбреНрдпреВрд▓ рдореЗрдВ AgmCoreModule.forRoot({...}) рднреА рдЬреЛрдбрд╝рд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдХрдИ google api рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рднреА рдЬрд╛рдБрдЪ рдХреА рд╣реИред
рдареАрдХ рд╣реИ, рдореЗрд░реА рдЧрд▓рддреА рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдпрд╣рд╛рдВ рдХрд┐рд╕реА рдФрд░ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ - рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдкреБрд░рд╛рдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЗрд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдЗрд╕реЗ рд╣рдЯрд╛ рдирд╣реАрдВ рд░рд╣рд╛ рдерд╛ред
@EddyP23 , рдЕрдЧрд░ рдореИрдВ skd рд╕реНрд╡рдд: рдкреВрд░реНрдг рдФрд░ рдПрдЬреАрдПрдо рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдЪреВрдВрдХрд┐ рдпрд╣ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ just delete your old script tag
рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдРрдк рдХреЗ рдХреБрдЫ рд╡рд┐рд░рд╛рд╕рддреА рд╣рд┐рд╕реНрд╕реЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдВ рдЖрд▓рд╕реА рд▓реЛрдбрд░ рдЬрд╛рдВрдЪ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдПрдкреАрдЖрдИ lib рд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореИрдВ рдЕрднреА рдереЛрдбрд╝рд╛ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ рдФрд░ рд╢рд╛рдпрдж рд╕реНрд░реЛрдд рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред
рдиреАрдЪреЗ рдореЗрд░реА рдХрд╛рдлреА рдЦрд░рд╛рдм рд╣реИрдХ рд╣реИ рдП) рдкреБрд░рд╛рдиреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЬреЛ рдорд╛рдирддреА рд╣реИрдВ рдХрд┐ рдПрдкреАрдЖрдИ рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб <script src=""
рдЯреИрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмреА) You have included the Google Maps API multiple times on this page
рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред
рдУрд╡рд░рд░рд╛рдЗрдб рд▓рд╛рдЧреВ рдХрд░реЗрдВ
import { ModuleWithProviders } from '@angular/core';
import { AgmCoreModule } from '@agm/core';
import { MapsAPILoader } from '@agm/core/services/maps-api-loader/maps-api-loader';
import { LazyMapsAPILoaderConfigLiteral } from '@agm/core/services/maps-api-loader/lazy-maps-api-loader';
export class AgmCoreOverrideModule {
static forRoot(lazyMapsAPILoaderConfig?: LazyMapsAPILoaderConfigLiteral): ModuleWithProviders {
var module = AgmCoreModule.forRoot(lazyMapsAPILoaderConfig);
// This is the magical path to what we need to override.
// Future releases of Agm Core may totally break this.
let provider: any = module.providers[2];
provider.useClass = IgnoreIncludingApiLoader;
return module;
}
}
export class IgnoreIncludingApiLoader extends MapsAPILoader {
load(): Promise<void> {
// Do absolutely nothing.
return new Promise<void>(resolve => resolve());
}
}
рдЗрд╕реЗ app.module . рдореЗрдВ рд╡рд╛рдпрд░ рдХрд░реЗрдВ
@NgModule({
imports: [
AgmCoreOverrideModule.forRoot({
apiKey: '<key>' // Not really needed.
})
],
...
рдореИрдВ рдХрдИ рджрд┐рдиреЛрдВ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдЦрд┐рд░рдХрд╛рд░ рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдкрд╣реБрдВрдЪрд╛ред
рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
рдпрджрд┐ рдЖрдк рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдХрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ рддреЛ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд░рдЦреЗрдВред
<br i="8"/>
platformBrowserDynamic().bootstrapModule(AppModule)<br i="9"/>
.catch(err => console.log(err));<br i="10"/>
рдХреЗрд╡рд▓ main.ts . рдореЗрдВ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЖрдк рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛
рдореИрдВ рдЙрд╕ рдПрд╕реНрдХреЗрдирд╛рд░рд┐рдпреЛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬреЛ @escarabin рдореЙрдбреНрдпреВрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
import { ModuleWithProviders, Inject, Optional, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AgmCoreModule, LAZY_MAPS_API_CONFIG, MapsAPILoader } from '@agm/core';
import { LazyMapsAPILoader, LazyMapsAPILoaderConfigLiteral } from '@agm/core/services/maps-api-loader/lazy-maps-api-loader';
import { WindowRef, DocumentRef, BROWSER_GLOBALS_PROVIDERS } from '@agm/core/utils/browser-globals';
@NgModule({ imports: [CommonModule, AgmCoreModule], exports: [AgmCoreModule]})
export class AgmOverrideModule {
static forRoot(lazyMapsAPILoaderConfig?: LazyMapsAPILoaderConfigLiteral): ModuleWithProviders {
return {
ngModule: AgmOverrideModule, providers: [BROWSER_GLOBALS_PROVIDERS, { provide: MapsAPILoader, useClass: ApiLoader },
{ provide: LAZY_MAPS_API_CONFIG, useValue: lazyMapsAPILoaderConfig } ]}
}
}
export class ApiLoader extends LazyMapsAPILoader {
private static cargado: boolean;
constructor( @Optional() @Inject(LAZY_MAPS_API_CONFIG) config: any, @Inject(WindowRef) w: WindowRef, @Inject(DocumentRef) d: DocumentRef) {
super(config, w, d);
}
load(): Promise<void> {
if (ApiLoader.cargado) {
return new Promise<void>(resolve => resolve());
} else {
return new Promise<void>((resolve, reject) => {
super.load()
.then(() => {
ApiLoader.cargado = true;
resolve();
})
.catch(err => {
reject(err);
});
});
}
}
}
рдФрд░ рд╕рд╛рдЭрд╛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛
@NgModule({
imports: [
...
AgmOverrideModule.forRoot({
apiKey: environment.claveMaps
}),
...
export class ComunModule
рдФрд░ рдЖрд▓рд╕реА рд▓реЛрдбреЗрдб рдореЙрдбреНрдпреВрд▓ рдореЗрдВ
```
@NgModule({
рдЖрдпрд╛рдд: [
рдХрдореНрдпреВрди рдореЙрдбреНрдпреВрд▓,
рдПрдЬреАрдПрдо рдУрд╡рд░рд░рд╛рдЗрдб рдореЙрдбреНрдпреВрд▓,
...
]
рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж:)ред
рд╕реЛрдо, 19 рдорд╛рд░реНрдЪ, 2018 рдХреЛ рд╢рд╛рдо 7:03 рдмрдЬреЗ, рдЬреВрд▓рд┐рдпрдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдореИрдВ рдПрд╕реНрдХреЗрдиреЗрд░рд┐рдпреЛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдХрд┐ @escarabin
https://github.com/escarabin рдореЙрдбреНрдпреВрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред'@angular/core' рд╕реЗ {рдореЙрдбреНрдпреВрд▓рд╡рд┐рдердкреНрд░реЛрд╡рд╛рдЗрдбрд░, рдЗрдВрдЬреЗрдХреНрдЯ, рд╡реИрдХрд▓реНрдкрд┐рдХ, NgModule} рдЖрдпрд╛рдд рдХрд░реЗрдВ;
{CommonModule} рдХреЛ '@angular/common' рд╕реЗ рдЗрдВрдкреЛрд░реНрдЯ рдХрд░реЗрдВ;
рдЖрдпрд╛рдд { AgmCoreModule, LAZY_MAPS_API_CONFIG, MapsAPILoader } '@agm/core' рд╕реЗ;
'@ agm/core/services/maps-api-loader/lazy-maps-api-loader' рд╕реЗ { LazyMapsAPILoader, LazyMapsAPILoaderConfigLiteral } рдЖрдпрд╛рдд рдХрд░реЗрдВ;
рдЖрдпрд╛рдд { WindowRef, DocumentRef, BROWSER_GLOBALS_PROVIDERS } '@agm/core/utils/browser-globals' рд╕реЗ;
'@agm/core/core.module' рд╕реЗ { coreDirectives } рдЖрдпрд╛рдд рдХрд░реЗрдВ;@NgModule ({рдЖрдпрд╛рдд: [CommonModule, AgmCoreModule], рдирд┐рд░реНрдпрд╛рдд: [AgmCoreModule]})
рдирд┐рд░реНрдпрд╛рдд рд╡рд░реНрдЧ AgmOverrideModule {
рд╕реНрдерд┐рд░ forRoot (lazyMapsAPILoaderConfig ?: LazyMapsAPILoaderConfigLiteral): рдореЙрдбреНрдпреВрд▓рд╡рд┐рдердкреНрд░реЛрд╡рд╛рдЗрдбрд░ {
рд╡рд╛рдкрд╕реА {
ngModule: AgmOverrideModule, рдкреНрд░рджрд╛рддрд╛: [BROWSER_GLOBALS_PROVIDERS, { рдкреНрд░рджрд╛рди рдХрд░реЗрдВ: MapsAPILoader, useClass: ApiLoader},
{ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ: LAZY_MAPS_API_CONFIG, рдЙрдкрдпреЛрдЧ рдореВрд▓реНрдп: рдЖрд▓рд╕реА рдореИрдкреНрд╕APILoaderConfig } ]}
}
}рдирд┐рд░реНрдпрд╛рдд рд╡рд░реНрдЧ ApiLoader LazyMapsAPILoader рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ {
рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ рдХрд╛рд░реНрдЧреЛ: рдмреВрд▓рд┐рдпрди;
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ (@Optional() @Inject(LAZY_MAPS_API_CONFIG) рдХреЙрдиреНрдлрд┐рдЧ: рдХреЛрдИ, @Inject(WindowRef) w: WindowRef, @Inject(DocumentRef) d: DocumentRef) {
рд╕реБрдкрд░ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдбрдмреНрд▓реНрдпреВ, рдбреА);}
рд▓реЛрдб (): рд╡рд╛рджрд╛{
рдЕрдЧрд░ (ApiLoader.cargado) {
рдирдпрд╛ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рдУ(рд╕рдорд╛рдзрд╛рди => рд╕рдВрдХрд▓реНрдк ());
} рдЕрдиреНрдп {
рдирдпрд╛ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рдУ((рд╕рдорд╛рдзрд╛рди, рдЕрд╕реНрд╡реАрдХрд╛рд░) => {
рд╕реБрдкрд░ рд▓реЛрдб ()
рддрдм (() => {
ApiLoader.cargado = рд╕рдЪ;
рд╕рдВрдХрд▓реНрдк();
})
рдХреИрдЪ (рдЧрд▓рддреА => {
рдЕрд╕реНрд╡реАрдХрд╛рд░ (рдЧрд▓рддреА);
});
});
}
}
}рдФрд░ рд╕рд╛рдЭрд╛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛
AgmOverrideModule.forRoot({ apiKey: environment.claveMaps }),
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/SebastianM/angular-google-maps/issues/692#issuecomment-374212677 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AiXUoVhigXAsP1d3tYQsPwK8UP_T-lfXks5tf7OkgaJpZM4KMHK6
.
рдореБрдЭреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 1.0.0-рдмреАрдЯрд╛.5 рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдпрд╣ рд╣рд░ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдпрд╣рд╛рдВ рд╕рдВрджрд░реНрдн рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ AgmCoreModule.forRoot
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
@NgModule({
imports: [
(...)
AgmCoreModule.forRoot({
apiKey: environment.googleMaps.apiKey
}),
рдФрд░ рдПрдХ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рдЬреЛ AgmCoreModule
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
@NgModule({
declarations: [
(...)
],
imports: [
(...)
AgmCoreModule,
рдЬрдм рдореИрдВ рдкрд╣рд▓реЗ рд░реВрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рдкреЗрдЬ рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреЗрдЬ рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЕрдЧрд░ рдореИрдВ рд╕реАрдзреЗ рдЖрд▓рд╕реА рдореЙрдбреНрдпреВрд▓ рд╡рд╛рд▓реЗ рдкреЗрдЬ рдкрд░ рдЬрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ...
рдореИрдВрдиреЗ рдереЛрдбрд╝реА рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрдЬреАрдПрдо рдХреЗ рд▓реЗрд▓реЛрдбрд░ рдХреА load
рд╡рд┐рдзрд┐ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЛ рдмрд╛рд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
FitBoundsService
. рдореЗрдВ рд╕реЗ рдПрдХfunction FitBoundsService(loader) {
var _this = this;
this._boundsChangeSampleTime$ = new BehaviorSubject(200);
this._includeInBounds$ = new BehaviorSubject(new Map());
this.bounds$ = from(loader.load()).pipe(flatMap(function () { return _this._includeInBounds$; }), sample(this._boundsChangeSampleTime$.pipe(switchMap(function (time) { return timer(0, time); }))), map(function (includeInBounds) { return _this._generateBounds(includeInBounds); }), shareReplay(1));
}
GoogleMapsAPIWrapper
. рдореЗрдВ рд╕реЗ рдПрдХGoogleMapsAPIWrapper.prototype.createMap = function (el, mapOptions) {
var _this = this;
return this._zone.runOutsideAngular(function () {
return _this._loader.load().then(function () {
var map = new google.maps.Map(el, mapOptions);
_this._mapResolver(map);
return;
});
});
};
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ?
рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@escarabin рдореБрдЭреЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдереАред рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗред
рдЖрдкрдХреЛ рд░реВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░реЗрдВ:
рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рдШрдЯрдХ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдпрд╣ рдХрд░реЗрдВ: