Javascript 将谷歌地图(V3)置于浏览器打印中心

Javascript 将谷歌地图(V3)置于浏览器打印中心,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我将地图设置为页面宽度的100%。地图有一个标记,并以该标记为中心。打印浏览器时,我希望地图保持在标记的中心。这是我为此编写的代码: var lastPos = map.getCenter(); google.maps.event.addListener(map, "idle", function() { lastPos = map.getCenter(); console.log(lastPos.toString()); }); google.maps.event.add

我将地图设置为页面宽度的100%。地图有一个标记,并以该标记为中心。打印浏览器时,我希望地图保持在标记的中心。这是我为此编写的代码:

var lastPos = map.getCenter();
google.maps.event.addListener(map, "idle", function() {
  lastPos = map.getCenter();
  console.log(lastPos.toString());
});      

google.maps.event.addDomListener(window, "resize", function() {
  google.maps.event.trigger(map, "resize"); 
  map.setCenter(lastPos);
  console.log("Re-center on " + lastPos.toString());
});
当我重新调整浏览器的大小时,此选项起作用,但当浏览器在打印前重新调整自身大小时,此选项不起作用。如果我的浏览器高于某个宽度,则在打印地图时,标记会完全移出页面(向右)


这是我的测试用例:

您的“打印”或“打印机”似乎有问题

我做了一个测试:

  • 加载测试地图并使浏览器非常宽

  • 打印预览并查看您描述的问题

  • 但是:我可以将打印比例从“Shrint to fit”(IE和FF的默认值)更改为30%,并且可以打印屏幕上显示的地图

  • 另一个想法是:


    您可以尝试使用另一个CSS打印来限制地图div的宽度,但我不确定这是否会首先触发地图的大小调整(您可以参考以下帖子:)

    您需要添加一个
    @媒体
    打印,并在打印时为地图指定大小,然后您可以执行下面解释的操作

    打印地图时,会保留左上角,并调整地图以适应
    @媒体
    打印大小

    如果希望中心保持不变,则需要手动更改地图的中心。 这是一个如何解决这个问题的例子

    它为正在应用的打印媒体事件使用侦听器,并根据地图如何更改(变小)的比率调整地图的中心

    您必须注意的一件事是,您可能必须使此浏览器成为所有浏览器的目标(此解决方案在Chrome中运行良好) 让它跨浏览器工作的一个好资源是:

    上面示例中的js代码侦听打印请求并移动地图,以便左上角与大地图具有相同的中心

    简而言之,这就是它的工作原理

  • 您需要输入地图与打印地图的比例(或者通过从JS检查来获得大小) 您可以将其分配给: 风险价值比率=2; var高度比=3

  • 您可以监听正在应用的打印介质,并移动中心,使其不发生变化

  • 完成打印后,将恢复更改
    在这里,您仍然有一个问题,即地图的一部分将被剪切,但这里没有一个好的解决方案,因为缩放级别1的分幅可能不会被缓存,因此当您缩小到合适的边界时,可能不会得到分幅。

    您好,谢谢您的回答。恐怕我尝试过在印刷媒体上使用不同的风格,但没有成功。结果是一样的——浏览器收缩包含贴图的div元素,但不重新居中。打印时缩放到较小的尺寸将不起作用,因为浏览器也会缩小其他尺寸。我需要使用整个页面。要看得更清楚一点,只需打印以下内容:--选择一种语言,您将看到两个div,打印时,它们都被裁剪以适合纸张:保留左上角(作为参考),保留大小,因此删除右/下部分。