Bây giờ tôi đã tìm thấy cách khởi tạo Google Maps với sự trợ giúp của Andy Joslin trong SO initialize-google-map-in-angularjs này, tôi đang tìm cách tải không đồng bộ đối tượng Google Map.Làm thế nào để tải không đồng bộ một bản đồ google trong AngularJS?
Tôi đã tìm thấy ví dụ về cách thực hiện việc này trong dự án phonecat.
Chú ý cách các tập tin JS được nạp trong ví dụ này: index-async.html
Trong Scripts Jade của tôi phần được nạp vào chương trình của tôi, tôi đã cố gắng:
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']);
});
Khi tôi làm điều này và đi đến tải trang bản đồ tôi nhận được:
A call to document.write() from an asycrononously-loaded
external script was ignored.
này là làm thế nào Google Maps đang được nạp tại như một dịch vụ:
'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);
}
Có vẻ như điều này sẽ trả về lời hứa từ những gì tôi nhớ lại. Nhưng AngularJS này rất mới đối với tôi.
Để thúc đẩy tiến trình về điều này tôi đã tạo một dự án git tại đây: https://github.com/LarryEitel/angular-google-maps VÀ đã đẩy nó vào đây: http://angular-google-maps.nodester.com/. Tôi đã bắt đầu một chuỗi trong Google Groups về điều này tại đây: https://groups.google.com/forum/?fromgroups&nomobile=true#!topic/angular/CM8ewcWeTF4 –
Khi bạn tải thư viện API Maps một cách không đồng bộ, bạn * phải * cung cấp chức năng gọi lại với tham số truy vấn 'callback ='. Nếu không trình nạp API sẽ sử dụng 'document.write()' không hoạt động từ một cuộc gọi không đồng bộ. Thư viện nhỏ trong câu trả lời của [GFoley83] (http://stackoverflow.com/a/17396353/1202830) thêm thông số này cho bạn, đó là lý do tại sao nó có thể hoạt động trong tình huống tải không đồng bộ như thế này. –