2010-02-03 50 views
6

我正在使用Google Maps API v2,並且希望能夠像Google在其「地圖」頁面上那樣打印地圖。如何在「打印」模式下查看Google地圖?

您可以單擊小型打印機圖標,並使用相同的地圖創建一個新的彈出窗口,但所有不可打印的東西(如控件)都被取出。 我知道在導航器中點擊「打印預覽」或「打印」時,他們使用@media print可以達到此效果。但是,彈出窗口不處於打印模式。

有沒有什麼辦法讓自己在做魔術,比如將當前媒體類型設置爲「打印」?或者他們欺騙和設置一個自定義的CSS樣式作弊?

我在同一頁面上有一個Silverlight插件和一個Google Map,我希望能夠創建一個包含準備打印的地圖的彈出窗口(就像Google正在做的那樣)。

感謝http://abcoder.com/google/google-map-api/print-button-for-google-map-api/我知道如何獲取HTML內容,但我只能得到所有控件等內容(我不想)。

任何幫助將不勝感激。

回答

6

谷歌地圖把一個類gmnoprint上的所有元素,他們不希望打印..所以此設置在打印CSS文件或彈出窗口,隱藏他們display:none ..

.gmnoprint{ 
    display:none; 
} 

Of'course這將隱藏任何谷歌認爲不適合打印..如果你想選擇其他項目,你將不得不以某種方式解析他們的HTML代碼:(

+0

是的,我終於注意到自己在使用IE中的開發工具的時候。 我增加了風格,它的工作原理與預期一樣:) – R4cOON 2010-02-05 11:51:45

+0

感謝您的幫助,這做了我需要的一部分。它顯示了地圖,但是我上面的多義線仍然隱藏,有關如何讓這些地圖顯示的想法? – MikeSchem 2017-05-01 21:26:08

1

另一個有用的方法來打印谷歌地圖是使用Google Static Maps API。可以基於一系列顯示參數生成靜態圖像(位置,縮放級別,大小,標記等),並將該圖像包含在打印視圖頁面中。

+1

這不適合我。我在地圖上有很多自定義疊加層,我不太喜歡複製創建邏輯以便能夠打印,而我已經有了一個非常好的地圖圖像。 – R4cOON 2010-02-05 11:53:58

+0

不夠公平:P ...靜態API的限制是你無法完成所有的自定義標記等等......所以如果你有很多覆蓋,那就不適合你。 +1的問題雖然:) – RedBlueThing 2010-02-05 12:08:46

3

我遇到了與通過kml添加的自定義地圖圖像疊加相同的問題。 Gaby對gmnoprint班級的提醒是關鍵。在我的例子中,應用gmnoprint類的div是我的img元素的直接父項,它正在消失。我基本上創建了一個「製作覆蓋可打印鏈接」:

$("#printable-map").click(function() { 
     if($(this).text() == "Include overlay when printing") { 
      $(this).text("Exclude overlay when printing"); 
      $("[src$=blah.png]").parent().removeClass("gmnoprint"); 
     } else { 
      $(this).text("Include overlay when printing"); 
      $("[src$=blah.png]").parent().addClass("gmnoprint"); 
     } 
    }); 

測試並在Safari,FF和Chrome中運行。