์ด ๋ฌธ์ ๊ฐ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋ฉฐ์น ์ดํ๋ก ๊ฝค ๋ฌธ์ ๊ฐ ์์ด ํด๊ฒฐ์ฑ ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ค์์ ๋ด @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 {}
๋ด HTML์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<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>
๋ค์์ ๋ด HTML ํค๋ ํ๊ทธ ์์ ์๋ ๋ด์ฉ์ ์คํฌ๋ฆฐ์ท์ ๋๋ค.
๊ทธ๋์ ์ค์ ๋ก API๋ฅผ ๋ ๋ฒ ํฌํจํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ด์ ์ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@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
์ ์ผ๋ถ๊ฐ ์๋๋ฉฐ ์ง๋๊ฐ ํ์๋์ง ์๋๋ค๋ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
shared.module.ts
๋๋ job-search.module.ts
์์ AgmCoreModule ์ ๊ฐ์ ธ์ฌ ๋ _"์ด ํ์ด์ง์ Google Maps 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}
์ ํ๊ธฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ด HTML์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<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 Maps API๋ฅผ ์ฌ๋ฌ ๋ฒ ํฌํจํ์ต๋๋ค" ์ค๋ฅ๊ฐ ๊ณ์ ํ์๋ฉ๋๋ค.
๋ด HTML์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<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
์ ๋ชจ๋ ์ฌ์ฉ๋ฒ์ ์ดํด๋ณด๊ณ ์ค์๋ก ๋ค๋ฅธ ๊ณณ์์ ๋ ๋ฒ ๊ฐ์ ธ์ค์ง ์๋์ง ํ์ธํฉ๋๋ค.
์ ๋ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ด ๊ตฌ์ฑ ์์์ ๋ํ app.module์ AgmCoreModule.forRoot({...})๋ฅผ ์ถ๊ฐํ๊ณ ์ฌ๋ฌ Google API ํธ์ถ์ ํ์ธํ์ต๋๋ค.
์ฌ์ ํ ๋์ผํ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
๋๋ ๋ํ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ํ ๋ด ๊ตฌ์ฑ ์์์ app.module์ AgmCoreModule.forRoot({...})๋ฅผ ์ถ๊ฐํ์ผ๋ฉฐ ์ฌ๋ฌ Google API ํธ์ถ๋ ํ์ธํ์ต๋๋ค.
๋ด ์ค์์ ๋๋ค. ์ฌ๊ธฐ์์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋์์ด ๋๋ค๋ฉด ์ฃผ์ ์ฒ๋ฆฌ๋ณด๋ค ์ด์ ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ์ญ์ ํด ๋ณด์ญ์์ค. ์ด๋ค ์ด์ ๋ก ํ ํ๋ฆฟ์ ์ฃผ์์ ๋ฌ์๋ ์ ๊ฑฐ๋์ง ์์์ต๋๋ค.
@EddyP23 , skd ์๋ ์์ฑ ๋ฐ agm ๋งต์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฌด์์ ํ ์ ์์ต๋๊น?
์ธ๋ฑ์ค๋ก ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
๋ถํํ๋ ์คํฌ๋ฆฝํธ ํ๊ทธ๊ฐ ์์ด์ผ ํ๋ ์ฑ์ ์ผ๋ถ ๋ ๊ฑฐ์ ๋ถ๋ถ์ด ์๊ธฐ ๋๋ฌธ์ just delete your old script tag
ํ ์ ์์ต๋๋ค. ๊ฐ์ ธ์ค๊ธฐ ์ ์ API ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋จผ์ ์๋์ง ํ์ธํ๋ ๊ฒ์ผ๋ฅธ ๋ก๋๋ฅผ ์ ์ํฉ๋๋ค. ์ง๊ธ ๋งํ์ ์์ค๋ฅผ ์์ ํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์์ ํ๋์ฝ๋ฉ๋ <script src=""
ํ๊ทธ๋ฅผ ํตํด api๊ฐ ์ ์ ์ผ๋ก ํฌํจ๋์ด ์๋ค๊ณ ๊ฐ์ ํ๋ ์ด์ ์ข
์์ฑ์ด ์๋ํ๋ ์ํ๋ก ์ ์ง๋๊ณ b) 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({
์์
ํ: [
์ปค๋ฎค๋ํฐ ๋ชจ๋,
AgmOverride ๋ชจ๋,
...
]
์ ๋ง ๊ณ ๋ง์ต๋๋ค:).
2018๋ 3์ 19์ผ ์์์ผ ์คํ 7์ 33๋ถ์ Juliete notifications@github.com ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@escarabin์ด๋ผ๋ ์๋๋ฆฌ์ค์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
https://github.com/escarabin ์ ๋ชจ๋ ์ฌ์ ์์ ๋ํด ์ค๋ช ํฉ๋๋ค.'@angular/core'์์ { ModuleWithProviders, Inject, Optional, NgModule } ๊ฐ์ ธ์ค๊ธฐ;
'@angular/common'์์ { CommonModule } ๊ฐ์ ธ์ค๊ธฐ;
'@agm/core'์์ { AgmCoreModule, LAZY_MAPS_API_CONFIG, MapsAPILoader } ๊ฐ์ ธ์ค๊ธฐ;
'@agm/core/services/maps-api-loader/lazy-maps-api-loader'์์ { LazyMapsAPILoader, LazyMapsAPILoaderConfigLiteral } ๊ฐ์ ธ์ค๊ธฐ;
'@agm/core/utils/browser-globals'์์ { WindowRef, DocumentRef, BROWSER_GLOBALS_PROVIDERS } ๊ฐ์ ธ์ค๊ธฐ;
'@agm/core/core.module'์์ { coreDirectives } ๊ฐ์ ธ์ค๊ธฐ;@NgModule({ ๊ฐ์ ธ์ค๊ธฐ: [CommonModule, AgmCoreModule], ๋ด๋ณด๋ด๊ธฐ: [AgmCoreModule]})
๋ด๋ณด๋ด๊ธฐ ํด๋์ค AgmOverrideModule {
์ ์ forRoot(lazyMapsAPILoaderConfig?: LazyMapsAPILoaderConfigLiteral): ModuleWithProviders {
๋ฐํ {
ngModule: AgmOverrideModule, ์ ๊ณต์: [BROWSER_GLOBALS_PROVIDERS, { ์ ๊ณต: MapsAPILoader, useClass: ApiLoader },
{ ์ ๊ณต: LAZY_MAPS_API_CONFIG, useValue: lazyMapsAPILoaderConfig } ]}
}
}๋ด๋ณด๋ด๊ธฐ ํด๋์ค ApiLoader๋ LazyMapsAPILoader๋ฅผ ํ์ฅํฉ๋๋ค. {
private static cargado: ๋ถ์ธ;
์์ฑ์( @Optional() @Inject(LAZY_MAPS_API_CONFIG) ๊ตฌ์ฑ: ๋ชจ๋, @Inject(WindowRef) w: WindowRef, @Inject(DocumentRef) d: DocumentRef) {
์ํผ(๊ตฌ์ฑ, w, d);}
load(): ์ฝ์{
if (ApiLoader.cargado) {
์๋ก์ด ์ฝ์์ ๋ฐํ(ํด๊ฒฐ => ํด๊ฒฐ());
} ๋ ๋ค๋ฅธ {
์๋ก์ด ์ฝ์์ ๋ฐํ((ํด๊ฒฐ, ๊ฑฐ๋ถ) => {
์ํผ๋ก๋()
.then(() => {
ApiLoader.cargado = true;
ํด๊ฒฐํ๋ค();
})
.catch(์ค๋ฅ => {
๊ฑฐ๋ถ(์ค๋ฅ);
});
});
}
}
}๊ณต์ ๋ชจ๋์์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
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-beta.5์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ ๊ฒฐ๊ณผ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ๊ฒ์ ์๋๋๋ค.
๋ค์์ ์ปจํ
์คํธ์
๋๋ค AgmCoreModule.forRoot
๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋ชจ๋์ด ์์ต๋๋ค.
@NgModule({
imports: [
(...)
AgmCoreModule.forRoot({
apiKey: environment.googleMaps.apiKey
}),
AgmCoreModule
๋ฅผ ์ฌ์ฉํ๋ ์ง์ฐ ๋ชจ๋:
@NgModule({
declarations: [
(...)
],
imports: [
(...)
AgmCoreModule,
๋จผ์ ๋ฃจํธ ๋ชจ๋์ ๋งํฌ๋ ํ์ด์ง๋ก ์ด๋ํ ๋ค์ ๋ ์ด ๋ชจ๋์ ํ์ด์ง๋ก ์ด๋ํ ๋ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ต๋๋ค. ์ง์ฐ ๋ชจ๋ ๋ด ํ์ด์ง๋ก ์ง์ ์ด๋ํ๋ฉด ๋ฌธ์ ๊ฐ ์์ต๋๋ค ...
๋๋ ์ฝ๊ฐ์ ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ๊ณ agm์ LayLoader์ 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 ๋๋ ๋น์ทํ ๋ฌธ์ ๊ฐ์์์ต๋๋ค. ์ด ์๋.
๋ฃจํธ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋์์ ๋งต์ ๊ฐ์ ธ์์ผ ํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ํ์ญ์์ค.
๊ทธ๋ฌ๋ ์ด ๋ชจ๋์ ์ํ์ง ์์ ๊ตฌ์ฑ ์์์์ ๋งต์ ์ฌ์ฉํ๋ ค๋ฉด ํด๋น ๋ชจ๋๋ก ์ด๋ํ์ฌ ๋ค์์ ์ํํ์ญ์์ค.