Android地图开发之地图的选择
做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地图开发之地图的选择的更多相关文章
- 百度地图开发-引入地图SDK并配置 02
百度地图开发-引入地图SDK并配置 02 通过上一篇文章的介绍,基本了解百度地图的基本信息,接下来就让我们一起来实际在项目中操作,显示出地图. 01 引入地图SDK 首先需要新建一个空白的Androi ...
- Android百度地图开发 百度地图得到当前位置
1.申请key 2.复制jar,以及.so .注意要Libs目录右键build path -> use as source folder(这是一个坑) 3. AndroidMainFast.xm ...
- android定位和地图开发实例
在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便. 首先介绍一下地图包中的主要类: MapController : 主要控制地图移动,伸缩,以某个GPS坐标 ...
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
标签: Android百度地图API Key 分类: Android 百度地图开发(2) 最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...
- Android 百度地图开发之一(Hello BaiDu Map)
之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图 ...
- Android百度地图开发-第一篇:申请、搭建百度地图
一.前言 这是第一篇关于Android使用百度地图的学习记录,主要记录: 1.在百度地图开发者平台上申请API Key. 2.在自己的应用中加入百度地图的Android版SDK. 3.在自己的应用中显 ...
- Android studio 百度地图开发(3)地图导航
Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
- [android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题
近期做android百度地图,可是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--仅仅显示网格而没有显示地图,网 ...
- Android百度地图开发(一)之初体验
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需 ...
随机推荐
- django 快速实现session的操作
说明: 从这一篇开始就不再完整的介绍django项目的创建过程了,因为前面几篇博客中都详细的介绍了这个创建过程,套路都是一样的,熟悉了这个套路,后面要做的是一些细节技术点的学习和练习. 上一节讲到了d ...
- iOS-UITableView-处理cell上按钮事件(弹出警示框,页面跳转等)
一. 目的: 实现UITableViewCell上按钮点击事件可以进行页面跳转. 二. 实现方法: 1. 用协议的方式的实现. 2. 需要自定义UITableViewCell. 三. 代码部分. ce ...
- IT人的自我导向型学习:学习的1个理念和2个心态
本文更新版本已挪至 http://www.zhoujingen.cn/blog/2484.html ----------------------------- 写这一个系列之前,我定位是与高效学习有 ...
- sublime text3 安装package
在sublime text2中安装package control插件的时候是执行python: import urllib2,os; pf='Package Control.sublime-packa ...
- IOS开发UI基础storyboard相关概念的认识
本文主要介绍一些基本的概念 为后面的学习做个准备 需要了解的知识点有以下几个方面: storyboard文件的认识 IBAction 和IBOutlet UIViewController控制器的认识 ...
- LVS使用整理(1)
开始安装LVS 1)下载相关软件包 mkdir -p /home/tools/cd /home/tools/wget http://www.linuxvirtualserver.org/softwar ...
- 查询自己电脑的IP
1.怎样查询电脑的IP 1)运用dos命令 在运行窗体上输入cmd,进入dos命令窗体,输出ipconfig/all命令,找到自己的IP地址 上面所圈出的就是本机IP地址 2) 进入“网络和共享中心” ...
- 基于bootstrap的图片轮播效果展示
<!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8&q ...
- 回车键和button按钮都绑定同一个事件,如何避免按回车的时候button重复点击
保存一个全局变量,用来记录Button的焦点状态 <button onclick="login();" onfocus="window.buttonIsFocuse ...
- .NET破解之100%营销QQ辅助软件【更新】
应网友要求,更新一个以前的版本,效果如下: 更改方法 修改一:更改对象的可访问性 Assembly: RWXComLibrary, Version=2.1.0.3 Name: RWXComLibrar ...