2013-12-10 47 views
0

有幾個關於谷歌地圖API中心問題的帖子。我瞭解以下調整大小的地圖:Durandal SPA Google Map API地圖定位

google.maps.event.trigger(map, 'resize');

我能得到的地圖第一頁顯示的div元素正確顯示。但是,在導航回到包含地圖的html頁面時,只會在div內顯示地圖的一部分。我遇到的問題是弄清楚如何合併這個調整大小的觸發器。我是新來SPA的和迪朗達爾,這裏是我的視圖模型負責地圖:

define(['async!https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false'], function() { 
    var vm = { 
     title: 'Home View', 
     attached: initialize, 
     activate: function() { 
      toastr.success('Map View Activated'); 
     } 

    }; 
    return vm; 

    function initialize() { 
     var mapOptions = { 
      zoom: 10, 
      center: new google.maps.LatLng(-34.397, 150.644), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

     map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
    } 
}); 

回答

7

當然,你會想這樣做時,地圖上是可見的,即它具有的高度和寬度。對此的最佳事件通常是組合完成事件。所以:

var vm = { 
    title: 'Home View', 
    attached: initialize, 
    activate: function() { 
     toastr.success('Map View Activated'); 
    }, 
    compositionComplete: function() { 
     google.maps.event.trigger(map, 'resize'); 
    } 
}; 

查看所有回調的列表,並描述在這裏:Hooking Lifecycle Callbacks

+0

非常感謝馬修!這是事件。 –

+1

很高興聽到它。在stackexchange上,如果有人發佈了您的問題的答案,您應該將問題標記爲已回答,並+1他們的帖子,請謝謝:) –