做lbs开发差不多快2年了,地图相关的产品也差不多做了3个了,用到过的地图包括google地图、高德地图、百度地图、图吧、Osmdroid,今天总结下,方便大家开发时选择合适的地图。

  首先说定位模块选择,高德地图、百度地图现在都有了单独的地位sdk,且都支持全球定位,都是非常不错的选择。我现在做的项目对定位要求很高,现在的选择是gps定位使用系统定位方式,基站定位使用百度定位,gps连接成功使用系统定位接口,gps断开切换到百度基站定位。

  gps定位,百度和高德都用过,但是测试发现没有同类产品统计的精度高,而且经常在有些机型出现问题,例如有些手机定位时,状态栏定位状态总是一闪一闪的,经常掉线,记录轨迹飘移较大,后来换成系统接口后,稳定很多,用户也反馈记录的轨迹精确很多。还有百度地图现在使用的定位sdk,返回的数据没有海拔数据,这也是不使用百度gps定位的一个原因,不知道现在有没修复。

  基站定位,感觉百度比高德数据返回的更快速点,地址解析或是搜索也是,不知道是不是百度的数据检索及大数据处理能力强点,不过也没仔细的对比测试,可能感觉不准确。

  其次说下地图的选择,我现在的产品使用的是百度矢量地图和Osmdroid栅格地图,因为主要是做户外地图,所以卫星地图和等高线图是必备,然后考虑到矢量地图数据量很小,所以也加上了,现在可以做到百度矢量、google卫星地图和OpenCycleMap一键切换,使用了2个地图框架,接口封装挺痛苦的。

  如果仅是做中国的地图产品,百度、高德都是不错的选择,这2个现在的接口都基本和googel的接口一样了,所以3者之间可以非常快速的切换。稳定性方面,我使用后的感受是google地图>高德>百度,我自己有开发一个应用,最开始采用google地图,后来google被墙了,换成高德,以前在google上使用没问题的地方,切换后就报异常了,多了一些限制,比如向地图添加一段轨迹,轨迹点必须大于2,并且必须设置图标,不然就报异常,然而google就可以先添加,再设置数据(记录轨迹时,刚开始没轨迹点,所以会先向地图添加一个轨迹,然后定位到了再不断更新轨迹点数据)。百度最近一段时间迭代非常快,有时2-3星期就更新一个版本,经常更新后有一些问题,而且有几次接口改动非常大(这个最坑爹了,给开发带来了不少额外工作量),基本就是将以前百度的接口否定了,然后改成了google得接口,在接口方面,google还是牛一点,接口都成了参考标准。另外,有一个同事最近在使用高德地图时,发现居然没有MapViewLayoutParams,我找了下高德的接口也好像确实没有,官方参考例子也没有相关例子,这样在地图某一个坐标添加一个较复杂的View就很麻烦了,不知道是不是有其他方式。

  如果要做面向全球服务的产品,在Android上现在好像还没有特别好的选择。google被墙,而且必须手机要有Google Service Framework,百度和高德等国内地图都只有中国的数据,似乎只有OpenStreetMap支持全球数据了。OpenStreetMap本身支持很多图源,数据全球都有,不过主要是面向户外的,城市地图没有其他地图那么精细(当然也可以添加google的普通和卫星瓦片地图的图源),然后可以自定义一些其他图源,有兴趣的朋友可以看下github上面的一个开源框架osmdroid,这个框架网上有一些介绍的文章。

  图吧地图,以前公司的几个产品用的是图吧的地图,做过一段时间的维护,和其他地图没什么有特色的地方,现在好像还没矢量地图,sdk很久没更新了。

  最后,这几个地图做一个总结:

  googel地图:gps坐标系,最稳定,卫星地图精细,但是在中国服务被墙,且手机必须要有Google Service Framework,在中国基本不FQ不root不可用;

  高德地图:火星坐标系(gcj),稳定性不错,支持全球定位,卫星地图不精细(很多户外区域放大没卫星数据),不过最近有同事反馈没有MapViewLayoutParams,可能在地图某个坐标添加较复杂视图比较麻烦,不知道是否有更新或者其他实现方式,大家选择时可以先研究下。还有默认UI感觉没百度精细漂亮。

  高德地图我在github上面有一个开源小项目TheSceneryAlong:https://github.com/John-Chen/TheSceneryAlong,大家可以参考下;

  百度地图:百度坐标系,卫星地图不精细(很多户外区域放大没卫星数据),版本迭代较频繁,不过最新版本已经很稳定了,支持全球定位,功能迭代较快,地图数据加载很快。

  Osmdroid:栅格地图,gps坐标系,可以自定义添加其他图源(可能其他图源得先转换坐标系,例如google地图图源得先将gps坐标转换成火星坐标,再在地图显示),有开源框架。

  除了使用sdk加载显示地图外,应该也可以通过webView加载map,通过js控制地图,对于地图图层较为简单的可以考虑下。

  嗯,先总结到这里,后面想到其他的再添加。如果写的有什么问题,欢迎交流指教。

Android地图开发之地图的选择的更多相关文章

  1. 百度地图开发-引入地图SDK并配置 02

    百度地图开发-引入地图SDK并配置 02 通过上一篇文章的介绍,基本了解百度地图的基本信息,接下来就让我们一起来实际在项目中操作,显示出地图. 01 引入地图SDK 首先需要新建一个空白的Androi ...

  2. Android百度地图开发 百度地图得到当前位置

    1.申请key 2.复制jar,以及.so .注意要Libs目录右键build path -> use as source folder(这是一个坑) 3. AndroidMainFast.xm ...

  3. android定位和地图开发实例

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便. 首先介绍一下地图包中的主要类: MapController : 主要控制地图移动,伸缩,以某个GPS坐标 ...

  4. Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

      标签: Android百度地图API Key  分类: Android 百度地图开发(2)    最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...

  5. Android 百度地图开发之一(Hello BaiDu Map)

    之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图 ...

  6. Android百度地图开发-第一篇:申请、搭建百度地图

    一.前言 这是第一篇关于Android使用百度地图的学习记录,主要记录: 1.在百度地图开发者平台上申请API Key. 2.在自己的应用中加入百度地图的Android版SDK. 3.在自己的应用中显 ...

  7. Android studio 百度地图开发(3)地图导航

    Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...

  8. [android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

        近期做android百度地图,可是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--仅仅显示网格而没有显示地图,网 ...

  9. Android百度地图开发(一)之初体验

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需 ...

随机推荐

  1. [Node.js] 也说this

    原文地址:http://www.moye.me/2014/11/21/也说this/ 引子 Any sufficiently advanced technology is indistinguisha ...

  2. Tools - Oracle SQL Developer

    Oracle SQL Developer Oracle公司出品的一个免费非开源的用以开发数据库应用程序的图形化工具. 可以浏览数据库对象.运行SQL语句和脚本.编辑和调试PL/SQL语句,也可以创建执 ...

  3. 50款免费名片设计模板 PSD 源文件下载《上篇》

    名片它可能是给你的客户留下正面的印象第一步,另一方面,名片是一个企业最重要和最符合成本效益的营销工具之一,尤其是对于刚刚起步的企业.这里收集了50款免费的名片设计模板,提供 PSD 源文件下载. 您可 ...

  4. [linux]执行pip安装的程序:command not found

    执行pip安装的程序:command not found 问题描述: 我有一台阿里云服务器,上面装的是centos系统,我用pip安装好vituralenv,都没办法直接启动.同样 我今天在部署我的t ...

  5. [爬虫学习笔记]基于Bloom Filter的url去重模块UrlSeen

            Url Seen用来做url去重.对于一个大的爬虫系统,它可能已经有百亿或者千亿的url,新来一个url如何能快速的判断url是否已经出现过非常关键.因为大的爬虫系统可能一秒钟就会下载 ...

  6. jquery实现表格内容筛选

    对于表格来说,当数据比较多的时候,我们无法一页一页的查找,这时可以通过一个搜索框来实现搜索. 对于这个搜素框,我们为了更好的体验可以利用keyup事件实现在用户输入的时候就开始筛选,而不是填完以后点击 ...

  7. DotNetBar的初步使用

    以前有用过SkinSharp和IrisSkin2皮肤控件来美化UI,简单易用,但不方便自定义.而DotNetBar功能很强大,不仅有Windows2007风格,更有Ribbon风格的界面效果.其效果演 ...

  8. 重新想象 Windows 8.1 Store Apps (83) - 文件系统的新特性

    [源码下载] 重新想象 Windows 8.1 Store Apps (83) - 文件系统的新特性 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之文件系统的新特 ...

  9. HDU 2577---How to Type

    HDU  2577 Description Pirates have finished developing the typing software. He called Cathy to test ...

  10. Angularjs,WebAPI 搭建一个简易权限管理系统 —— WebAPI项目主体结构(四)

    目录 前言 Angularjs名词与概念 Angularjs 基本功能演示 系统业务与实现 WebAPI项目主体结构 Angularjs 前端主体结构 5.0 WebAPI项目主体结构 5.1 总体结 ...