前端er干干净净打印百度地图的方法

时间:2021-07-18 18:06:00

由于百度地图的死活不改进的臭毛病,导致需要打印地图时就很不爽。

毛病:

1、多余的不需要打印的元素,比如logo, 空白的备注框,多余的文字和按钮。

2、默认至少会打印两页纸,第一页是内容,第二页往往是空白,造成很大的浪费。


我在百度地图的网站上提交了问题报告,几个月过去了没回应;在微博上向百度地图官博又提交了问题报告,对方回复说反馈給产品部门了,但又几十天过去了,涛声依旧。


作为一名有那么一点点挑剔的前端er,自然无法忍受,用自己的方法改变一下吧。


先从百度地图主界面,选“工具”下拉菜单,再点“打印”,会跳出打印页面。

在打印页面加载后,调出控制台,运行下面的js代码:

//干净打印百度地图
var d=document,gi='getElementById',wp=d[gi]('wp'), mh=d[gi]('MapHolder'),t;
wp.appendChild(mh);
while(t=mh.previousSibling)wp.removeChild(t);
while(t=wp.nextSibling)wp.parentNode.removeChild(t);
wp.style.marginTop='50px';
d.body.style.height='auto';
d.documentElement.style.height='auto';
d[gi]('MapHolder').style.pageBreakAfter='avoid';
运行完这个,就很清静了,再打印就OK。

这段主要做了2件事情,一是删除多余元素,节省打印空间,二是修正CSS,防止多打印1页空白。

这段脚本只保留地图区域,如果还要打印公交换乘等文字信息的,就不适用了。

打印的时候,我喜欢选横版打印,并且去掉标题,网址,页码等页头页脚内容。