2016-08-09 160 views
0

Also verwende ich uiGmapgoogle-maps in meinem eckigen Projekt. Ich brauche die API-Schlüssel angeben, nach deren Dokumentation ist in den Bootstrap-Prozess als Config getan werden muss:Wie konfiguriert man den 'uiGmapgoogle-maps'-API-Schlüssel nach dem Bootstrap?

.config(function(uiGmapGoogleMapApiProvider) { 
    uiGmapGoogleMapApiProvider.configure({ 
     key: 'your api key', 
     v: '3.20', //defaults to latest 3.X anyhow 
     libraries: 'weather,geometry,visualization' 
    }); 
}) 

aber mein Problem ist, ich habe nicht die API erst später in den Anwendungen Leben. Um genau zu sein, ist der API-Schlüssel in der Datenbank und ist spezifisch für einen Benutzer. Der Benutzer müsste sich anmelden und dann können wir auf den API-Schlüssel zugreifen.

Ich habe ein wenig über lazy loading angularjs controllers geforscht, aber ich konnte nicht verstehen, wie dieses spezifische Problem zu sortieren ist.

Also, wie würde ich diese Konfiguration nach dem Boostrap-Prozess ausführen? Speziell von einem Controller.

+0

Warum jeder Benutzer hat sein eigener API-Schlüssel? ist es eine Anforderung? –

+0

Getrennt. Ich denke, dass die Version mindestens 3.22 sein muss, um zu arbeiten --- Ich benutzte die gleiche Bibliothek in einem Projekt vor kurzem ... Ich kann die Verweisung auf Google Map API nicht finden, aber es musste definitiv geändert werden – mjabraham

+0

@MuliYulzary Ja, das ist eine Voraussetzung für die Anwendung. –

Antwort

0

Ich beantworte meine eigene Frage nach der Behebung dieses Problems.

habe ich einen Anbieter:

provider('GmapsKey', class GmapsKey { 
    constructor() { 
     this.uiGmaps = null; 
    } 

    set key(key) { 
     this.uiGmaps.configure({key}); 
    } 

    $get() { 
     return this; 
    } 
}); 

und

config(['uiGmapGoogleMapApiProvider', 'GmapsKeyProvider', (uiGmapGoogleMapApiProvider, GmapsKeyProvider) => { 
    GmapsKeyProvider.uiGmaps = uiGmapGoogleMapApiProvider; 
}]); 

Sobald ich meinen Schlüssel bereit hatte, injizierte ich GmapsKey und den Schlüssel gesetzt:

GmapsKey.key = userConfig.uGMapAPIKey;