我对Android应用程序中的离线地图有点困惑。
我想使用Open Street Maps。但是我如何重新设计他们的样式然后在我的项目中使用?顺便说一句,我正在寻找的资源必须是免费的..
有没有关于此的好教程?我是新手,所以感谢任何有用的信息。
答案 0 :(得分:4)
以下是基础知识:
光栅瓷砖很糟糕。在我看来,这种移动映射方法非常老套,没有任何优势(除非你的计划是制作一个非常糟糕的应用程序)。
另一件事是 矢量图块 。所有数据都以更有效的方式保存,并且可以非常精美地显示。
解决方案(被提名者)是:
顺便说一句,mapbox gl实际上允许渲染您自己的地图数据(来自您自己的提供商)。关于这个问题有一个closed issue on github,几天前由我开放,其中一个项目开发人员给出了非常好的答案。
如果您不关心使用自己的数据源并希望快速将自定义(而不是谷歌/苹果)地图实施到您的项目中,那么您也可以使用许多解决方案。您可以考虑Mapbox,Scobbler,GetYourMap,或者再次,只是谷歌搜索更多。在OSM网站上实际上有一个great article关于最常用的Android开发的库和应用程序。
最后,祝你好运与您的地图项目。永远不要忘记:
如果你找不到某些东西并不意味着它真的不存在 - 可能你刚刚搜索不够。
答案 1 :(得分:1)
如果您需要使用自定义样式显示离线地图,则可以使用任何类型的OSM渲染。 http://wiki.openstreetmap.org/wiki/Rendering
对于多个城市的情况,我建议您http://wiki.openstreetmap.org/wiki/AlaCarte或http://wiki.openstreetmap.org/wiki/TileMill
创建自己的样式,并将地图图块导出到sqlite db archive。
之后,您需要为OSMDroid库创建自己的TileProvider。这个答案可以帮助你How to use MOBAC created OSMDroid SQLite tile source file offline?
如果您需要的不仅仅是使用自定义样式进行渲染,还可以使用: https://getyourmap.com/它是OSM矢量渲染器。但是访问原始数据以创建路由和搜索会有一些问题。
也许最难但最好的方法是使用OSMAnd。它是开源的,有很多功能,但它是一个应用程序,而不是组件或库。
所以,如果你想创建一个独立的应用程序。你需要切断你不需要的功能。
https://github.com/saintbyte/mapsforge它是开源的,因此可以添加路由和搜索。我知道风格可能是定制的,但我还没试过。