Javascript 将谷歌地图(V3)置于浏览器打印中心
我将地图设置为页面宽度的100%。地图有一个标记,并以该标记为中心。打印浏览器时,我希望地图保持在标记的中心。这是我为此编写的代码: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
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());
});
当我重新调整浏览器的大小时,此选项起作用,但当浏览器在打印前重新调整自身大小时,此选项不起作用。如果我的浏览器高于某个宽度,则在打印地图时,标记会完全移出页面(向右)
这是我的测试用例:您的“打印”或“打印机”似乎有问题 我做了一个测试:
您可以尝试使用另一个CSS打印来限制地图div的宽度,但我不确定这是否会首先触发地图的大小调整(您可以参考以下帖子:)您需要添加一个
@媒体
打印,并在打印时为地图指定大小,然后您可以执行下面解释的操作
打印地图时,会保留左上角,并调整地图以适应@媒体
打印大小
如果希望中心保持不变,则需要手动更改地图的中心。
这是一个如何解决这个问题的例子
它为正在应用的打印媒体事件使用侦听器,并根据地图如何更改(变小)的比率调整地图的中心
您必须注意的一件事是,您可能必须使此浏览器成为所有浏览器的目标(此解决方案在Chrome中运行良好)
让它跨浏览器工作的一个好资源是:
上面示例中的js代码侦听打印请求并移动地图,以便左上角与大地图具有相同的中心
简而言之,这就是它的工作原理
在这里,您仍然有一个问题,即地图的一部分将被剪切,但这里没有一个好的解决方案,因为缩放级别1的分幅可能不会被缓存,因此当您缩小到合适的边界时,可能不会得到分幅。您好,谢谢您的回答。恐怕我尝试过在印刷媒体上使用不同的风格,但没有成功。结果是一样的——浏览器收缩包含贴图的div元素,但不重新居中。打印时缩放到较小的尺寸将不起作用,因为浏览器也会缩小其他尺寸。我需要使用整个页面。要看得更清楚一点,只需打印以下内容:--选择一种语言,您将看到两个div,打印时,它们都被裁剪以适合纸张:保留左上角(作为参考),保留大小,因此删除右/下部分。