做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. 用vuejs写了一个酷狗的webApp

    这几天在学习vueJS,学了半个月,觉得是不是该写点什么呢?于是 .脑子一抽,仿了一个酷狗的webapp. 项目截图: 由于是单页应用,切换路由时音乐不会停止,算是一个小亮点吧. 技术栈: vuejs ...

  2. 【转】http-equiv="X-UA-Compatible" 设置IE浏览器兼容模式详解

    文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE ...

  3. c++容器(vector、list、deque)

    vector ,deque 和 list 顺序性容器: 向量 vector :   是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可 ...

  4. php查询IP地址归属等信息

    淘宝公司提供了一个很好用的IP地理信息查询接口.在这里:http://ip.taobao.com/TaobaoIPQuery2这个类将极大的简化相关的信息查询. 类 TaobaoIPQuery2 文件 ...

  5. javaweb学习总结(三十二)——JDBC学习入门

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

  6. Studio for Winforms FlexGrid: 创建分类汇总

    C1FlexGrid.Subtotal方法可以增加包含普通(非小计)行的汇总数据的分类汇总行. 分类汇总支持分层聚合.例如,如果你的表格包含销售数据,你可能会通过产品.地区和推销员来小计一下以得出总的 ...

  7. YEdit

    YEdit YEdit is a YAML editor for Eclipse. See the wiki for more details Installation Use the Eclipse ...

  8. java开发过程中从前台传到后台中文乱码《filter》

    在企业开发中,最常见的是javaweb项目,有web项目就免不了和后台打交道,比如我从jsp页面发送新增请求到后台,后台可能是servlet.struts2.springmvc等,这时就存在一个问题, ...

  9. Picasso

    1.简介 Picasso是Square公司出品的一个强大的图片下载和缓存图片库1)在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解 ...

  10. react与redux学习资料的整理

    **重点内容**React学习 1.新手入门可以访问react的官方网站,如果英语不是特别好的同学可以访问中文版的,具体链接http://reactjs.cn/react/index.html 首页有 ...