在开发应用程序之前,我研究了在使用Android地图创建轻量级应用程序时可能适用的解决方案。
应用程序的基本用法是徒步旅行,因此以下要求应用必须符合:
应用程序基本流程是:
某些网站社区为所需区域提供自定义标记和kml(或其他图层数据类型)文件。
应用程序将一些地图提供者地图(如Google地图,OpenStreetMaps)+社区数据组合到所需区域,并为用户提供离线使用功能。用户可以在远足前准备带有互联网连接的地图,并在徒步旅行时离线使用。
要解决的策略和主要问题:
选择轻量级地图sdk及其相关问题:
虽然徒步旅行的人经常使用较旧版本的智能手机,因为它们配备较旧版本的Android,因此耗尽较少的电池电量,因此适用于旧版Android的应用程序使用较少的计算能力。
此处的常见解决方案是Google Maps SDK 2.0,它本身由Google Play SDK提供,但Google Play SDK随着时间的推移变得越来越重,并且要求用户安装了几乎较晚版本的Google Play服务。
Google Maps SDK 2.0的优势在于它为进一步扩展提供了强大的代码库,同时也为所有UI调整提供了出色的MapView组件。
谷歌地图SDK 2.0的缺点是,它要求用户安装Google Play服务,这本身就会消耗电话费。此外,新的MapView UI组件可能需要更多的计算资源。
解决离线地图问题:
在我研究过的情况下,可以使用 TileProvider 界面在Google Maps SDK 2.0中的设备上随处提供自定义图块,从而可以很好地控制图块。它的主要抽象方法是:
public Tile (int width, int height, byte[] data).
其他SDK:
MapBox android sdk更接近Google Maps SDK 2.0。它是promissing但仍然是beta并且是开源的。与其他不太知名的android map sdks相比,MapBox有温和的文档,漂亮的工具,几乎是轻量级的,并且有社区但是还有bug。
我也尝试使用Google Maps SDK 2.0 https://play.google.com/store/apps/details?id=com.vecturagames.android.app.gpxviewer
开发的应用程序在我最好的猜测中,这个应用程序正在使用谷歌地图SDK MapView来显示各种来源的地图,如OpenStreetMap,MapBox和几乎所有在线提供的地图提供商,包括谷歌。
问题: