离线地图OSM

时间:2015-07-17 01:30:22

标签: android dictionary openstreetmap offline-mode

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

我想使用Open Street Maps。但是我如何重新设计他们的样式然后在我的项目中使用?顺便说一句,我正在寻找的资源必须是免费的..

有没有关于此的好教程?我是新手,所以感谢任何有用的信息。

2 个答案:

答案 0 :(得分:4)

以下是基础知识:

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

另一件事是 矢量图块 。所有数据都以更有效的方式保存,并且可以非常精美地显示。

解决方案(被提名者)是:

  1. Mapsforge - 感谢@dkiselev
  2. OSMAnd app - 感谢@dkiselev
  3. Mapbox GL(Android版本现在没有版本,但他们正在努力工作)。如果你真的喜欢mapbox,你可以考虑一下 Mapbox Android SDK,它使用光栅图块,但我相信,那 当GL lib将被释放时,切换到Mapbox GL并不会那么难。
  4. AirBNB AirMapView - 开源并具有发布版本
  5. Urban Labs Sputnik Demo - 也是有趣的解决方案,但我没有使用它。
  6. Mapzen Open - 开源的Android应用程序,它使用来自世界各地的所有最好的。 - 获胜者!
  7. 顺便说一句,mapbox gl实际上允许渲染您自己的地图数据(来自您自己的提供商)。关于这个问题有一个closed issue on github,几天前由我开放,其中一个项目开发人员给出了非常好的答案。

    如果您不关心使用自己的数据源并希望快速将自定义(而不是谷歌/苹果)地图实施到您的项目中,那么您也可以使用许多解决方案。您可以考虑MapboxScobblerGetYourMap,或者再次,只是谷歌搜索更多。在OSM网站上实际上有一个great article关于最常用的Android开发的库和应用程序。

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

      

    如果你找不到某些东西并不意味着它真的不存在    - 可能你刚刚搜索不够。

答案 1 :(得分:1)

离线栅格图块缓存

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

对于多个城市的情况,我建议您http://wiki.openstreetmap.org/wiki/AlaCartehttp://wiki.openstreetmap.org/wiki/TileMill

创建自己的样式,并将地图图块导出到sqlite db archive。

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

离线矢量图块。

Getyourmap

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

OSMAnd

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

所以,如果你想创建一个独立的应用程序。你需要切断你不需要的功能。

Mapsforge

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