2014-10-28 45 views
0

我在模態中顯示谷歌地圖,我看到很多人都有這個問題,似乎有一個修復,但迄今爲止我沒有嘗試過的工作。流星:莫達爾斯和谷歌地圖

基本上我正在加載谷歌地方搜索Template.map.rendered - 它似乎像DIVs發生了什麼事情,因爲當我調整窗口大小重新呈現並正確顯示。

現在,我嘗試了各種技巧(隱藏/顯示各種DIV),調用google.maps.event.trigger(map,「resize」);等等。

地圖模板正在被加載到另一個模板是一種形式(與其他領域等)。

如果有人可以指出我的卓越成果 - 看起來應該是一個簡單的修復,但我很難過。

謝謝!

+0

你有複製? – stubailo 2014-10-28 23:47:05

回答

0

你很幸運,我們剛剛解決了我們的問題。假設模板圖被稱爲模內:

Template.map.rendered = function() { 

    Tracker.autorun(function() { 

     Session.set('map_available', true); 

     var center = { 
      latitude: -1.8445 
      longitude: 52.9445 
     }; // end var center 

     var zoomLevel = 15;  

     if(Session.equals('map_available', true)) { 

     GoogleMaps.init({'sensor': true, 'key' : 'OPTIONAL_KEY' }, 
      function() { 

       var mapOptions = { 
       zoom: zoomLevel, 
       minZoom: 15, 
       maxZoom: 20, 
       mapTypeId: google.maps.MapTypeId.ROADMAP, 
       navigationControlOptions: { 
        style: google.maps.NavigationControlStyle.SMALL 
       }; 

       map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
       map.setCenter(new google.maps.LatLng(center.latitude, center.longitude));   

      } // end closure param 2 of GoogleMaps init 
     }); // end GoogleMaps.init 
    } // end Session.equals 'map_available' 

    } //end Tracker.autorun 

} // end Template.map.rendered 




Template.map.destroyed = function() { 
    Session.set('map_available', false); 
} 

所以這裏的策略是監視依賴獨立跟蹤,並確保任何DOM反應後它就會被重新添加。這裏的獎勵功能是,如果您在Tracker.autorun(例如var center = navigator.location)中包含var center修改,那麼您在移動時會有一個更改中心的地圖(lat,long已更改)。

,我們使用擴展mrt:googlemapsGoogleMaps集成。似乎是最好的使用。

+0

好吧,我會給它一個鏡頭。我實際上只是使用了原始的Google API代碼 - 但這看起來很簡單。謝謝。 – cmee 2014-10-31 14:51:44

0

有同樣的問題,困難了一個小時。我簡單的解決方法是將它包裝在一個窗口中。嘗試一下,你可能會喜歡它:-)

Template.mapsAutoComplete.rendered = function() { 
    window.onload = function() { 
    var map = new google.maps.Map(document.getElementById('map-canvas'), 
     mapOptions); 
    ... 
    }; 
}; 
+0

謝謝,是的,我試過這個,但不幸的是,它甚至沒有出現。我現在可能只是把它放下。 – cmee 2015-01-12 16:01:12

+0

我試過所有這些,但地圖仍然無法正確渲染(或者我猜是因爲我使用的地圖已經渲染,所以Template.map.rendered沒有效果)。 – cmee 2016-01-25 22:26:44

+0

這是我的小提琴 - https://jsfiddle.net/cmeethree/sLbskqho/#&togetherjs=FrOzkJLkFz – cmee 2016-01-25 22:30:17