Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Map JS API v3无法打印路由_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript Google Map JS API v3无法打印路由

Javascript Google Map JS API v3无法打印路由,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,在我们的网页中,我们集成了google maps js api v3,以显示一些地方的动态视图。这很好,包括列出驾驶方向 但是,打印只提供地图,而没有地图上的蓝色路线 我现在发现这些元素是使用canvas元素渲染的,有几个线程告诉我需要从canvas到imghtml的转换,对于其他动态内容(如多段线等)也是如此 但是:c.toDataURL在chrome中给了我们一个安全错误:捕获的安全错误:未能在“HtmlCanvaElement”上执行“toDataURL”:可能无法导出受污染的画布。此外,

在我们的网页中,我们集成了google maps js api v3,以显示一些地方的动态视图。这很好,包括列出驾驶方向

但是,打印只提供地图,而没有地图上的蓝色路线

我现在发现这些元素是使用canvas元素渲染的,有几个线程告诉我需要从canvas到imghtml的转换,对于其他动态内容(如多段线等)也是如此

但是:c.toDataURL在chrome中给了我们一个安全错误:捕获的安全错误:未能在“HtmlCanvaElement”上执行“toDataURL”:可能无法导出受污染的画布。此外,根本没有其他浏览器打印,因为脚本执行已停止,可能是因为该错误

我们的代码如下所示,它获取相关的html,复制它,并进行各种页面上显示的转换,然后继续打印,如果注释掉转换,效果会很好

    var originalContents = document.body.innerHTML;

    var dataUrl = [];
    var i = 0;

    /* Conversion Code */
    $("#map_canvas canvas").filter(function(){
      dataUrl.push(this.toDataURL("image/png")); // <-- THIS GIVES THE ERROR    
    });
    /* Conversion Code */

    var DocumentContainer = document.getElementById('map_canvas');
    var DocumentContainer_temp = $(DocumentContainer).clone();

    DocumentContainer_temp.find(".gm-style-iw").parent().remove();
    DocumentContainer_temp.find(".gmnoprint").remove();

    /* Conversion Code */
    $(DocumentContainer_temp).find('canvas').each(function () {               
     $(this).replaceWith('<img src="' +  dataUrl[i] 
                          + '" style="position: absolute; left: 0px; top: 0px; width: 256px; height: 256px;" />');
     i++;
    });
    /* Conversion Code */

    //.... printing etc. following later
提前感谢您的帮助

编辑: 我不知道谷歌为什么不提供打印这些东西的教程,我想他们不想正式支持这一点,但我们的客户也要求提供这一功能,声称这在网站上很常见,而我从来没有看到过一个网站能像我们在这里尝试做的那样:

显示包含动态谷歌地图内容的div 允许获取驾驶方向 打印元素、地图和方向。 我很高兴从你那里得到一个链接到任何一个这样做的网站,因为这样我就可以很容易地查看他们的JS文件,看看他们是如何做到的


再次感谢您

基本上你的问题是:为什么打印地图如此困难

我会反问:为什么人们让它变得如此困难

打印包含通过画布创建的形状的地图并不困难,只需按“打印”按钮即可

困难的是复制/克隆地图,但我看不出你为什么要这样做

最好使用CSS,而不是使用javascript。使用一个页面布局,通过CSS可以隐藏除地图以外的任何内容,而您所需要的只是一个媒体打印样式表

当然,这在大多数情况下也是复杂的,一个非常简单的解决方案:


为可能动态创建的地图使用iframe。要仅打印地图,请调用iframe的print方法,将打印的只是地图

基本上你的问题是:为什么打印地图如此困难

我会反问:为什么人们让它变得如此困难

打印包含通过画布创建的形状的地图并不困难,只需按“打印”按钮即可

困难的是复制/克隆地图,但我看不出你为什么要这样做

最好使用CSS,而不是使用javascript。使用一个页面布局,通过CSS可以隐藏除地图以外的任何内容,而您所需要的只是一个媒体打印样式表

当然,这在大多数情况下也是复杂的,一个非常简单的解决方案:


为可能动态创建的地图使用iframe。要仅打印地图,请调用iframe的print方法,将打印的只是地图

你说得对,直接打印是可能的。天哪,我怎么能监督呢?考虑到我的努力程度,这不可能是真的。谢谢!你说得对,直接打印是可能的。天哪,我怎么能监督呢?考虑到我的努力程度,这不可能是真的。谢谢!