2014-01-21 49 views
0

我目前正在爲自定義谷歌地圖設置打印按鈕。我的最終目標是讓我的地圖在打印時調整大小爲800px x 800px,因此無論您的設備大小如何,地圖的可視區域都適合紙張。爲打印介質準備自定義谷歌地圖的大小調整/定位問題

這個調整大小的部分工作得很好,但是當試圖更新地圖時它只在打印窗口被觸發後才改變。我是否在地圖上缺少必要的刷新,或者有什麼明顯的東西我只是沒有看到。

在此先感謝!

Broken Code;

function center_print() { 
    var lastPos = map.getCenter(); 
     document.getElementById("map-canvas").style.height = "800px"; 
     document.getElementById("map-canvas").style.width = "800px"; 
    map.setCenter(lastPos); 
    window.print(); 
     document.getElementById("map-canvas").style.height = ""; 
     document.getElementById("map-canvas").style.width = ""; 
    map.setCenter(lastPos); 
    } 

最終解決方案;

//Used for centering the map on print 
    function center_map(size) { 
    lastPos = map.getCenter(); 
    if (lastPos != null) { 
    document.getElementById("map-canvas").style.height = size + "px"; 
    document.getElementById("map-canvas").style.width = size + "px"; 
    google.maps.event.trigger(map, 'resize'); 
    map.setCenter(lastPos); 
    return true; 
    } 
    else { 
    return false; 
    } 
    } 

    function print_map() { 
    if (center_map(800)) { 
     window.setTimeout(window.print, 1000); 
     document.getElementById("map-canvas").style.height = ""; 
     document.getElementById("map-canvas").style.width = ""; 
    } 
    } 
+0

您使用的是商業授權? AFAIK打印貼有自定義標記的貼圖被許可協議禁止。 – Swires

+0

這件作品沒有標記。只是試圖找到調整大小的地圖中心。 – t3muis

回答

2

我建議在重新調整大小的地圖,像這樣的觸發地圖本身上重新大小:

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

這應該保留從原來的大小,我相信中心。

+0

這實質上是這樣做的,我不得不修改一些原始代碼,因爲我的window.print()發射得太早。謝謝! – t3muis