在没有服务器的情况下生成可再发行的地图图像

时间:2013-09-22 00:30:16

标签: javascript openlayers client-side openstreetmap mapbox

我想创建一个应用程序,允许用户下载地图的静态图像,并在Anki闪存卡套牌中重新分发它们。但是,我很难确定如何在不面临任何许可限制或运行我自己的服务器的情况下生成地图图像。我希望我的应用程序成为所有客户端JavaScript,它排除了我迄今为止找到的解决方案之一。我已经看到了一种将开放层用于export images from the canvas的方法,但是需要使用代理服务器将画布转换为dataURL,以便保存它。

到目前为止,我发现的最有希望的选项是MapQuest Open Static Maps API。但是,我找不到有关它是多么开放的信息。 OSM数据是开放的,但我不确定图像本身,因为他们说版权mapquest。 Mapbox还有一个静态地图API,其中包含许可限制,我不清楚。

2 个答案:

答案 0 :(得分:1)

我最终使用leaflet-image。 leaflet-image可以使用leafletjsOSM tiles L.map对象生成图像dataURL。它使用CORS来请求磁贴并避免使用tainting the canvas

感谢@tyr在他的comment中提到传单图像。我在评论中提到的问题已经解决。

答案 1 :(得分:0)

我们使用TileMill开发了一个解决方案来生成MBTiles文件。然后我们开发了一个非常简单的PHP脚本,它打开了MBTiles(本质上是一个sqlite数据库),然后将每个图像的blob保存到文件中。