适用于Android的地图应用:一般策略

时间:2015-07-10 15:16:18

标签: android google-maps google-play-services google-maps-android-api-2

在开发应用程序之前,我研究了在使用Android地图创建轻量级应用程序时可能适用的解决方案。

应用程序的基本用法是徒步旅行,因此以下要求应用必须符合

  1. 必须尽可能少地使用硬件资源。
  2. 必须能够保存地图数据,以便进一步离线使用所选的本地区域。
  3. 必须能够加载由3dparity生成的自定义数据,例如kml文件和自定义标记。
  4. 应用程序基本流程是:

    某些网站社区为所需区域提供自定义标记和kml(或其他图层数据类型)文件。

    应用程序将一些地图提供者地图(如Google地图,OpenStreetMaps)+社区数据组合到所需区域,并为用户提供离线使用功能。用户可以在远足前准备带有互联网连接的地图,并在徒步旅行时离线使用。

    要解决的策略和主要问题:

    1. 选择轻量级地图sdk。
    2. 解决离线地图问题。
    3. 选择轻量级地图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和几乎所有在线提供的地图提供商,包括谷歌。

      问题:

      1. 使用地图和离线磁贴基础支持为Android开发轻量级应用的最佳做法是什么?
      2. 使用Google Maps SDK 2.0时是否可以避免使用Google Play服务?
      3. 还有其他性能友好的开源地图sdks吗?例如,使用OpenStreetMaps地图库。

0 个答案:

没有答案