私はGoogleマップのEmberビューを作成し、オンデマンドで、つまり非同期的にAPIを読み込むようにスクリプトをロードしようとしています。Google Maps APIを読み込んでember.jsビューで初期化する
ビュー内に2つの機能があります.1つはGoogle Maps APIを読み込むためのもので、もう1つは地図の初期化です。しかし、GoogleではAPIを必要とするリンクを介してコールバック関数を呼び出す必要があるためです。しかしEmber.JSでは、私は正しい結果を得ることができませんでした。私が持っているのは、マップを初期化しようとしているときにオブジェクト "google"が定義されていないというエラーメッセージです。
ここにEmberの表示コードがあります。
App.MapsView = Ember.View.extend({
templateName: 'maps',
map: null,
didInsertElement: function() {
this._super();
this.loadGoogleMapsScript();
},
initiateMaps:function(){
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(this.$().get(0), mapOptions);
this.set('map',map);
},
loadGoogleMapsScript: function(){
var map_callback = this.initiateMaps();
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=map_callback';
document.body.appendChild(script);
},
});
どのようにこのコールバックの問題を解決するためのアイデアですか?そして、地図を初期化する最適な方法は何ですか?それはテンプレートかJSから来るべきですか?
ありがとうございます。
すでに誰かが遭遇した場合には、ここでノートを作り、問題を修正同じ問題。 コールバック関数を宣言し、ウィンドウオブジェクトにバインドする必要があります。以下のコードを参照してください: window.map_callback = function(){ self.initialize(); } 作品... – ANY507