2010-02-03 14 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中运行。