2013-05-01 16 views
3

我正在使用单张API http://leafletjs.com/构建地图绘制应用程序。无法获得phantomjs 1.9以将单张SVG矢量图呈现为png

我想用phantomjs来生成地图的静态截图。

举个例子,为了显示此页:使用

phantomjs例子

http://leafletjs.com/examples/geojson-example.html

/rasterize.js http://leafletjs.com/examples/geojson-example.html test.png

结果遗漏了SVG图像中覆盖。我已经在Windows 7和Fedora Core 15下使用预编译的二进制文件尝试过了。另外,我在Fedora Core 15下从源代码编译了它。在两个平台上构建的所有内容都产生了相同的行为。

有没有人使用phantomjs成功地将单张地图映射到PNG?

谢谢。

+1

您是否尝试将第29行中的[rasterize.js](https://github.com/ariya/phantomjs/blob/master/examples/rasterize.js)脚本中的超时从200增加到某个更高的值? – flup 2013-05-02 19:14:04

+0

是的,我想过超时问题在一次测试中,我实际上修改了rasterize.js以包含waitFor示例,并导致它等待一个标志,我只在绘制完所有矢量形状后才设置该标志。我用console.log消息来验证它。一切都无济于事。 (虽然好思考。) – 2013-05-02 22:34:12

回答

1

我刚刚遇到同样的问题,增加超时(至少5000)并未使SVG叠加显示在PDF中。

这也可能是这个问题:https://github.com/ariya/phantomjs/issues/11171

切换到单张主分支解决了这一问题对我来说。

+0

优秀。我会尝试一下。 (我搜索了整个错误列表,但错过了那个,谢谢你的指针!) – 2013-05-02 22:35:41

+0

从今天起,使用master分支并不能解决问题。有趣的是,在我的测试用例中,稳定版本至少呈现Marker图层(但不是多段线),但主分支引起phantomjs甚至不呈现标记。然而,它确实证明了所使用的Leaflet版本对phantomjs有影响。 – 2013-05-03 12:50:01

+0

我的地图中没有标记,但这里是我的工作内容,Leaflet master和PhantomJS 1.9是从源代码构建而成的:3个包含多边形的图层组,其中一些具有透明图层填充,另一些图层不包含图层图层。 – 2013-05-10 13:07:19