离线地图 OSM

Offline maps OSM

我对 android 应用程序中的离线地图的想法有点困惑。

我想使用 Open Street Maps。但是我怎样才能重新设计它们的样式然后在我的项目中使用呢?对了,我要找的资源必须是免费的..

有什么好的教程吗?我是新手,如果有任何有用的信息,我将不胜感激。

离线栅格切片缓存

如果您需要使用自定义样式显示您的离线地图,您可以使用任何类型的 OSM 渲染器。 http://wiki.openstreetmap.org/wiki/Rendering

几个城市的情况,我会推荐你​​http://wiki.openstreetmap.org/wiki/AlaCarte or http://wiki.openstreetmap.org/wiki/TileMill

创建您自己的样式,并将地图切片导出到 sqlite 数据库存档。

之后,您需要为 OSMDroid 库创建自己的 TileProvider。这个答案可以帮助你 How to use MOBAC created OSMDroid SQLite tile source file offline?

离线矢量图块。

获取你的地图

如果您不仅需要使用自定义样式进行渲染,还可以使用: https://getyourmap.com/ 它是 OSM 矢量渲染器。但是访问原始数据以创建路由和搜索会有一些问题。

OSM和

也许最难但最好的方法是使用 OSMAnd。它是开源的,有很多功能,但它是一个应用程序,而不是组件或库。

因此,如果您想创建一个独立的应用程序。您将需要切断不需要的功能。

Mapsforge

https://github.com/saintbyte/mapsforge 它是开源的,因此可以添加路由和搜索。样式,据我所知可能是定制的,但我没试过。

基本情况如下:

栅格图块很糟糕。在我看来,这种移动映射的方法非常老套并且没有任何优势(除非你的计划是制作一个非常难看的应用程序)。

另一件事是 向量图块。所有数据保存更高效,显示更精美

解决方案(提名人)是:

  1. Mapsforge - 感谢@dkiselev
  2. OSMAnd app - 感谢@dkiselev
  3. Mapbox GL(android 版本现在没有发布,但他们正在努力工作)。如果你真的喜欢mapbox,你可以考虑 Mapbox Android SDK,它使用栅格图块,但我相信, 切换到 Mapbox GL 不会那么难,当 GL 库发布时。
  4. AirBNB AirMapView - 开源并有发布版本
  5. Urban Labs Sputnik Demo - 也是一个有趣的解决方案,但我没有使用它。
  6. Mapzen Open - 开源 android 应用程序,它使用了来自世界各地的所有最好的东西。 - 获胜者!

顺便说一句,mapbox gl 实际上允许渲染您自己的地图数据(来自您自己的提供商)。几天前我打开了一个 closed issue on github,其中一位项目开发人员的回答非常好。

如果您不关心使用自己的数据源并希望快速将自定义(不是 google/apple)地图实施到您的项目中 - 还有许多解决方案适合您。您可能会想到 OSM 网站上的 Mapbox, Scobbler, GetYourMap or, again, just google it to find more. There is actually a great article 关于 android 开发的最流行的库和应用程序。

最后,祝你好运你的制图项目。永远不要忘记:

if you can't find something doesn't mean it really doesn't exist - probably you've just been searching not enough.