所以我猜这个答案是"没有",但有没有办法导出我用mapbox studio在线设计的地图(https://www.mapbox.com/studio/)到.mbtiles文件,所以我可以自己托管?
老实说,我愿意为此付钱(省去了获取一个世界.pbf文件并将其放入postgresql数据库的麻烦真是一种痛苦,特别是对于像我一样平庸的计算机)< / p>
听起来好像曾经有过一种方法可以做到这一点,但截至目前看起来他们已经取消了这种能力。我可以看到很多不同的方式来使用我创建的地图,但是一切都迫使我使用mapbox作为托管服务......似乎没有办法下载地图我就是这样。我创造了。
答案 0 :(得分:6)
我认为你的假设是正确的。 MapBox似乎希望您使用他们的API和API密钥。
但是,如果您可以回退,则可以使用栅格切片进行部分解决。或者,您可以从OSM数据而不是从mapbox服务器获取矢量mbtiles。
我已经在2017年4月联系了mapbox支持,而且我被告知的是,虽然你可以从MapBox工作室下载的样式文件不包含瓷砖,但是有&#39; sa让它们在Android / iOS上脱机渲染的方法。
如果您想离线使用Mapbox地图,则需要按照Android或iOS显示的示例进行操作,具体取决于您的平台。从本质上讲,移动SDK采用指向您在Mapbox Studio中创建的自定义样式的样式URL,并且SDK处理下载保持地图脱机所需的所有其他资源(字体,图标,拼贴等)。查看我们的离线地图指南,了解有关其工作原理的更多信息。
链接:
从快速查看示例代码,看起来瓦片的下载是在应用程序内完成的,但提前完成,例如在安装应用程序之后,你仍然有 网络连接。关于您的结算问题,我不会立即查看此下载中是否涉及您的Mapbox API密钥。每个离线区域有6000个离线磁贴限制。
不适用于桌面:该网站还提到离线不是MapboxGl-JS的选项,因此您必须进行破解才能在桌面版网络浏览器上使用离线区域
在设置中有一个非常明显的选项可以将你的源作为mbtiles文件下载到mapbox studio classic 中。 github上的mapbox classic issue有截图,按钮应该在哪里。这个选项现在可能已经消失了。
github项目https://github.com/klokantech/vector-tiles-sample提供了项目/工具的链接,这些项目/工具可以将mbtiles文件分解为其包含的pbf文件,这些文件是每个矢量图块(https://github.com/mapbox/mbutil)的protobuf压缩格式。稍微过时了。
可能起作用的方法是提前缓存从MapBox检索到的每个切片的网络请求,然后在APP代理中缓存对缓存的请求。我不确定这是否反对ToS。您可能必须以编程方式使用要缓存的所有XYZ坐标。
您可以使用tippecanoe创建矢量切片(并自己托管)。我知道,它不是MapBox。但从长远来看,它可能会更进一步。
关于它的简短博客文章:http://fuzzytolerance.info/blog/2017/02/02/Making-your-own-tiles-with-Tippecanoe/
您创建的mbtiles,您可以对它们进行分层,并可能使用开源maputnik(有点像mapbox的样式编辑器)对它们进行样式化。然后用自己的服务器服务mbtiles,并将你的风格插入mapboxGL-js或openlayers。
TileMill仍然可用(但已弃用),在桌面上运行,并允许您从shapefile创建地图(例如,您可以在https://mapzen.com/data/metro-extracts/获取单个城市的openstreetmap shapefile。)
TileMill,会在流程结束时给你一个mbtiles文件。虽然,mbtiles包含光栅图块,而不是矢量图块。矢量图块可以动态设置样式,因此当您想要适应各种字体或适应光线时,它可以在移动设备上使用。
栅格图块可能就足够了,因为在您的应用中,您可能能够在该基础图层的顶部渲染其他交互式对象。 OpenLayers是一个可移植的框架,您可以在其中执行此操作,例如,允许用户绘制对象或单击您从数据库中独立于地图数据加载的兴趣点。
现在似乎有一个替代的Vector tile制作者,http://openmaptiles.org(曾经是http://osm2vectortiles.org)。
您可以访问此处,并为您选择的城市下载mbtiles文件,例如:https://openmaptiles.org/downloads/#city,然后使用磁贴服务器为您的应用提供该文件(本地)。 (或者使用上面提到的工具之一将其分解为单独的pbf文件并从本地磁盘/内存中读取文件)
通过这种方法,您可以将来自OSM的矢量mbtiles与您在mapbox studio中创建的样式相结合(mapbox studio允许您下载带有.json样式的zip文件),您仍然可以使用MapBoxGL显示它。
可以使用Maputnik http://maputnik.com/编辑mapboxgl样式文件(编辑器可以使用本地存储)。并且大概有https://github.com/boundlessgeo/ol-mapbox-style,它允许您将该样式转换为适合OpenLayer风格API的代码。