Jetzt, wo ich einen Weg gefunden habe, Google Maps mit Hilfe von Andy Joslin in diesem SO initialize-google-map-in-angularjs zu initialisieren, suche ich nach einer Möglichkeit, ein Google Map-Objekt asynchron zu laden.Wie man eine google Karte in AngularJS asynchron lädt?
Ich fand ein Beispiel dafür, wie man dies im phonecat Projekt macht.
Beachten Sie, wie die JS-Dateien in diesem Beispiel geladen werden: index-async.html
In meiner Jade Scripts teilweise, die in meinem Programm habe ich versucht, geladen ist:
script(src='js/lib/angular/angular.js')
script(src='js/lib/script/script.min.js')
script
$script([
'js/lib/angular/angular-resource.min.js',
'js/lib/jquery/jquery-1.7.2.min.js',
'http://maps.googleapis.com/maps/api/js?key=AIzaSyBTmi_pcXMZtLX5MWFRQgbVEYx-h-pDXO4&sensor=false',
'js/app.js',
'js/services.js',
'js/controllers.js',
'js/filters.js',
'js/directives.js',
'bootstrap/js/bootstrap.min.js'
], function() {
// when all is done, execute bootstrap angular application
angular.bootstrap(document, ['ofm']);
});
Wenn ich dies tun, und gehen Sie die laden Karte Seite erhalte ich:
A call to document.write() from an asycrononously-loaded
external script was ignored.
Dies wird, wie Google maps jetzt als Dienst geladen wird:
'use strict';
var app = angular.module('ofm.services', []);
app.factory('GoogleMaps', function() {
var map_id = '#map';
var lat = 46.87916;
var lng = -3.32910;
var zoom = 15;
var map = initialize(map_id, lat, lng, zoom);
return map;
});
function initialize(map_id, lat, lng, zoom) {
var myOptions = {
zoom : 8,
center : new google.maps.LatLng(lat, lng),
mapTypeId : google.maps.MapTypeId.ROADMAP
};
return new google.maps.Map($(map_id)[0], myOptions);
}
Es scheint, dass dies ein Versprechen von dem, was ich mich erinnere, Lesen zurückgeben soll. Aber dieses AngularJS ist sehr neu für mich.
zu Fortschritt vorantreiben Ich habe hier ein git-Projekt erstellt: https://github.com/LarryEitel/angular-google-maps UND habe es hier live gebracht: http://angular-google-maps.nodester.com/. Ich habe hier einen Thread in Google Groups gestartet: https://groups.google.com/forum/?fromgroups&nomobile=true#!topic/angular/CM8ewcWeTF4 –
Wenn Sie die Maps-API-Bibliothek asynchron laden, müssen Sie * eine * bereitstellen Callback-Funktion mit dem Parameter 'callback = 'query. Andernfalls wird der API Loader 'document.write()' verwenden, der von einem asynchronen Aufruf nicht funktioniert. Die Minibibliothek in [GFoley83] (http://stackoverflow.com/a/17396353/1202830) Antwort fügt diesen Parameter für Sie hinzu, weshalb sie in einer asynchronen Ladesituation wie dieser arbeiten kann. –