ライブラリ類のバージョン
- jQuery 1.7.2
- jQuery Mobile 1.1.0
- Google Maps API V3 (3.8)
覚書1: Google Maps APIの動的ロード
htmlのどこいらかで、jsapiを読み込んでおく。
<div id="scriptArea"> <script type="text/javascript" src="http://www.google.com/jsapi"></script> </div>
地図を読み込む局面で、jspai経由でgoogle Maps API読み込みを行う。
// Maps API読み込み状態を管理するdeferredオブジェクトを作っておく。 _maps_loaded: $.Deferred() // 地図の読み込み終了直後に行う初期化処理を登録しておく。 this._maps_loaded.done(this.initialize_map); // 読み込み開始、完了時にDeferredを完了状態にする。 google.load('maps', '3', { other_params: 'sensor=false', callback: function(){ that._maps_loaded.resolve(); }});
覚書2: 地図を画面いっぱいに広げる
jQuery Mobileだと地図用のdivのwidth,heightを100%にしても広がらない模様。
$('#map_canvas').css('width', $(document).width()); $('#map_canvas').css('height', $(document).height()); // ↓は実機では未検証。 // 画面回転についていくなら、orientationchangeメソッドについていけばよい(はず)。 $(window).on('orientationchange',function(e){ });
下はテスト書きした全文。適当なオブジェクトに作り始めたけど、クラス化するか、jQuery MobileのWidget化するか、かな。
var store_map_page = { _maps_loaded: $.Deferred(), _map_options: {}, geos: {}, map_obj: {}, map_info_window: {}, _lazy_loaded: function(){ this.geos = { station: new google.maps.LatLng(34.810538,135.494923), yamada: new google.maps.LatLng(34.812141,135.494709), oasis: new google.maps.LatLng(34.811155,135.494473) }; var map_options = { zoom: 17, center: this.geos['station'], mapTypeId: google.maps.MapTypeId.ROADMAP }; this.map_obj = new google.maps.Map(document.getElementById('store_map_canvas'), map_options); this.map_info_window = new google.maps.InfoWindow(this.map_obj); _map_options = map_options; }, _initialize: function (){ var that = this; this._maps_loaded.done(this.map_resize, this._lazy_loaded); google.load('maps', '3', { other_params: 'sensor=false', callback: function(){ that._maps_loaded.resolve(); }}); }, map_resize: function(){ $('#store_map_canvas').css('width', $(document).width()); $('#store_map_canvas').css('height', $(document).height()); }, orientation_changed: function(e){ this.map_resize(); if(e.orientation =='portrait'){ } else { } } }; $('body').on('pageshow', function(){ store_map_page._initialize.apply(store_map_page); }); $(window).on('orientationchange',function(e){ store_map_page.orientation_changed.call(store_map_page, e); }); $(window).resize(store_map_page.map_resize);
0 件のコメント:
コメントを投稿