Chrome Headless无法使用Google Maps 3D或Google Earth

时间:2017-09-21 12:11:42

标签: google-maps google-chrome google-chrome-headless puppeteer

我认为Chrome Headless是Chrome的全功能版本,可以运行任何Chrome桌面也可以运行的版本。但是,Chrome Headless似乎无法显示Google地图和Google地球的3D网页。

Google地图网址示例:

  

https://www.google.co.uk/maps/@51.6506889,-0.4041839,40a,35y,113.57h,73.36t/data=!3m1!1e3

Google地球:

  

https://earth.google.com/web/@51.6499525,-0.40162489,64.98644774a,251.31324967d,35y,111.968

这是终端的一个例子:

chrome --headless --disable-gpu --screenshot https://earth.google.com/web/@51.6499525,-0.40162489,64.98644774a,251.31324967d,35y,111.96869586h,49.99995375t,0r

使用puppeteer的例子

const puppeteer = require('puppeteer');

async function run() {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.setViewport({width:2880, height:1800});
    await page.goto('https://www.google.co.uk/maps/@51.5516152,0.7010375,66a,35y,170.86h,79.21t/data=!3m1!1e3', {"waitUntil" : "networkidle"});
    await page.screenshot({ path: './example-2d.png' });

    browser.close();
}

run();

预期结果是什么?

我希望结果的呈现方式与桌面版Chrome浏览器中的结果相同。

会发生什么?

对于谷歌地图链接,它以2D而不是3D呈现。

对于google earth,会显示错误消息:

  

Aw Snap!您的浏览器尚不支持新版Google地球。请改用Chrome中的此链接。如果您没有安装Chrome,请在此处下载。

有谁知道为什么会这样?是否需要在Chrome中启用某些功能才能正确呈现地图和地球?

1 个答案:

答案 0 :(得分:0)

有两个问题。

  1. 由于您使用--disable-gpu,因此WebGL无效。我可以通过删除此标记来启用3D Google地图,但由于Getting Started with Headless Chrome表示需要此标记,因此它可能无法在任何地方使用。

  2. earth.google.com/web使用了,这似乎不受无头支持。

  3. 我能够通过省略--disable-gpu来使3D Google地图工作,但是屏幕截图命令产生了一个尚未完成渲染的页面,所以我不得不使用远程调试器。