Angular-google-maps: Anda telah menyertakan Google Maps API beberapa kali di halaman ini

Dibuat pada 2 Okt 2016  ·  19Komentar  ·  Sumber: SebastianM/angular-google-maps

Saya tahu masalah ini terjadi pada orang lain tetapi saya cukup terjebak dengannya sejak berhari-hari, tidak dapat menemukan solusi apa pun.

Ini @NgModule saya :

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 {}

Ini HTML saya:

<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>

Dan ini adalah tangkapan layar dari apa yang saya miliki di dalam tag kepala HTML saya:

screen shot 2016-10-02 at 13 36 15

Jadi sepertinya itu benar-benar termasuk API dua kali tetapi saya tidak tahu mengapa atau bagaimana.

MapsAPILoader

Komentar yang paling membantu

@escarabin saya punya masalah yang sama. Coba ini.

Anda perlu mengimpor peta di modul aplikasi root, jadi Anda melakukan sesuatu seperti ini:

@NgModule({
    declarations: [
        ...
    ],
    imports: [
        ...,
        AgmCoreModule.forRoot({
            apiKey: 'some key here'
        })
    ],

Tetapi kemudian jika Anda ingin menggunakan peta dalam komponen yang bukan milik modul ini, buka modul itu dan lakukan ini:

@NgModule({
    declarations: [
        SomeComponentThatHasMapsInItsHtml,
        .....
    ],
    imports: [
        AgmCoreModule,
        ...
    ],

Semua 19 komentar

@escarabin masalahnya adalah Anda mengimpor modul dalam modul anak aplikasi Anda. Anda harus mengimpornya di dalam modul root aplikasi Anda. Menutup ini karena ini bukan bug. Jangan ragu untuk membuka kembali. Terima kasih!

hai @SebastianM! Terima kasih atas sarannya tetapi saya masih menghadapi masalah ini.
Ini konfigurasi saya:

  • Saya perlu menggunakan angular2-google-maps dalam modul anak yang disebut job-search-module.ts
  • Saya memiliki shared.module.ts yang berisi semua komponen dan modul yang saya gunakan di beberapa modul lainnya.
  • Modul root saya adalah app.module.ts

Sekarang, ketika saya mengimpor AgmCoreModule di app.module.ts saya, saya melihat kesalahan yang mengatakan bahwa sebm-google-map bukan bagian dari job-search-module.ts saya dan tidak ada peta yang ditampilkan.
Ketika saya mengimpor AgmCoreModule baik di shared.module.ts atau di job-search.module.ts , saya melihat _"Anda telah menyertakan Google Maps API beberapa kali di halaman ini"_.

Apa yang harus saya lakukan?

PS: Saya tidak memiliki kemampuan untuk membuka kembali masalah

siapa pun? :( Saya cukup terjebak dengan itu sekarang

@escarabin saya punya masalah yang sama. Coba ini.

Anda perlu mengimpor peta di modul aplikasi root, jadi Anda melakukan sesuatu seperti ini:

@NgModule({
    declarations: [
        ...
    ],
    imports: [
        ...,
        AgmCoreModule.forRoot({
            apiKey: 'some key here'
        })
    ],

Tetapi kemudian jika Anda ingin menggunakan peta dalam komponen yang bukan milik modul ini, buka modul itu dan lakukan ini:

@NgModule({
    declarations: [
        SomeComponentThatHasMapsInItsHtml,
        .....
    ],
    imports: [
        AgmCoreModule,
        ...
    ],

Untuk menambahkan mengapa saya pikir ini berhasil, adalah karena Anda perlu mendaftarkan hal itu di root aplikasi Anda (sehingga barang-barang google diinisialisasi dengan kunci Anda).

Tetapi Anda menggunakan <seb-maps-smth-smth> dalam komponen yang dimiliki modul lain, jadi Anda perlu menambahkan AgmCoreModule sebagai impor sehingga dapat menemukan komponen yang diekspor dalam modul ini yang memiliki pemilih seb-maps-smth-smth .

Semoga itu menyelesaikan masalah

Terima kasih banyak atas usahanya @EddyP23 tapi sayangnya saya masih melihat kesalahannya...apakah ini benar-benar bekerja di pihak Anda menggunakan [email protected] ? Ini sangat aneh.

Masalahnya bukan kesalahan itu sendiri tetapi juga menyebabkan banyak bug yang benar-benar acak pada halaman...

Juga, Anda berbicara tentang <seb-maps-smth-smth> . Saya tidak menggunakan tag ini dan saya tidak melihatnya di dokumen. Saya menggunakan <sebm-google-map>

@escarabin Ya, saya menggunakan versi 0.15.0.

Dengan smth smth yang saya maksud adalah pemilih seb-maps-{placeholder} apa pun. HTML saya terlihat seperti:

<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>

Kesalahan apa yang Anda lihat sekarang? Saya percaya pengaturan ini harus bekerja. Bisakah Anda membagikan lebih banyak kode?

Saya masih melihat kesalahan "Anda telah menyertakan Google Maps API beberapa kali di halaman ini".

HTML saya terlihat seperti ini:

<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>

Ini modul anak saya:

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 {}

dan app.module.ts saya @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 ],
})

Hm.. Aneh. Apakah Anda yakin tidak memiliki tag skrip yang mengimpor peta google di mana saja (misalnya di index.html ) dengan cara lama? Sesuatu seperti ini:

<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
    </script>

Saya juga akan memeriksa semua penggunaan AgmCoreModule untuk memeriksa bahwa Anda tidak mengimpornya dua kali di tempat lain secara tidak sengaja.

Saya juga mengalami masalah ini. Saya telah menambahkan AgmCoreModule.forRoot({...}) di app.module untuk komponen saya, dan saya telah memeriksa beberapa panggilan google api.
Masih mengembalikan kesalahan yang sama.

Saya juga mengalami masalah ini. Saya juga telah menambahkan AgmCoreModule.forRoot({...}) di app.module untuk komponen saya, dan saya juga telah memeriksa beberapa panggilan google api.

Oke kesalahan saya, jika itu membantu orang lain di sini--coba hapus tag skrip lama Anda daripada mengomentarinya. Untuk beberapa alasan, mengomentarinya di template tidak menghapusnya.

@EddyP23 , Apa yang dapat saya lakukan jika saya menggunakan skd autocomplete dan agm maps?
Karena diimpor ke dalam indeks