早上起床后想想以前的工作有什么可以分享的。。。

两年前,前公司在做一个陌生人交友的社交软件(比陌陌还早),需要研究LBS的相关工作(这里面主要研究的是Google定位)。。。

一、简要调研结果

很多
LBS
软件都
使用
了第三方的地图
API
(比如百度,高德地图等等),精确度还可以(多多少少有偏差)

使用Google自身API的话,位置精确度更低(GPS,WIFI定位时,google的卫星数据是正确的,但是在天朝之下,也许是为了安全考虑,你懂的。。。所以国家会要求地图数据提供商进行偏移。。。所以情况是拿到定位的数据后,卫星模式显示正常,地图模式有偏差—拿到真实的位置显示在地图上时却有个东南方向的偏差),要想位置更加精确,就需要个纠偏算法,也就是还原算法了。所以如果你的应用想用Google定位的话,你需要有个纠偏算法。

LBS的软件就不说了,哪个社交软件没有位置。。。

二、定位方式对比

1.GPS定位

2.WIFI定位

3.基站定位

4.三种定位方式对比

三,研究体会

1.开发者注意:

开发者在不用的电脑上跑同一套程序(api key只是在某一台电脑上申请的)时,出现只有网格没有地图数据的情况,原因是debug.keystore与api key没有配对(不同电脑debug.keystore不一样,对应api key也不一样),当然正式发布不会出现这种情况(都是用正式的keystore打包)。

2.定位的优先级别:

室外定位 :GPS > WIFI >基站

室内环境:WIFI>基站>GPS

3.请使用Google Geocoding API (V3),请注意,原来的GoogleGeocoding API V2已经弃用。

即使V2某些API现在仍然可以用,但是强烈要求使用V3 API.

4.五个主要的API

1.Google Geocoding API:主要是用于地址解析和反向地址解析。

2. Google Directions API:使用HTTP请求计算多个位置间路线的服务。

3.Google Elevation API:查询地球上位置的海拔数据。

4.Google Places API :可用于查询附近商家信息或者其他感兴趣的地点信息。

.Google Static Maps API :可用于获取自定义位置图片.

4.1 Google Geocoding API

小时的限制或者滥用此服务,Google Geocoding API可能会暂停为您服务。如果您继续无视这个限制,将会阻止您对GoogleGeocoding API的访问。

该api包括四部分:

1.地址解析

2.反向地址解析

3.视角偏向

4.区域偏向

详细: http://code.google.com/intl/zhCN/apis/maps/documentation/geocoding/#Viewports

4.2  Google Directions API

个路标。

详细:http://code.google.com/intl/zhCN/apis/maps/documentation/directions/#TravelModes

4.3   Google Elevation API

使用 GoogleElevation API时,每天的海拔位置查询请求

不得超过
25,000

小时限制或以其他方式滥用此服务,则Google Elevation API可能会临时停止运行。如果您继续无视这个限制,将会阻止您对Google Elevation API的访问。

对于单点查询,Google Elevation API会尽可能地传回精确度最高的数据。对于包含多个位置的批量查询,传回的数据精度可能会比较低,尤其是当位置比较分散时,因为过滤掉了某些数据。

详细:http://code.google.com/intl/zh-CN/apis/maps/documentation/elevation/

4.4Google Places API(可以用于地商家和感兴趣地点的信息)

注意:

想要使用 Google Places API的开发人员应填写GooglePlaces API申请表

要使用Google Places API,您必须首先请求GoogleMaps API客户端ID和加密密钥(用于对请求网址进行签名)。有关如何对网址请求进行签名的信息,请参见网络服务API主页中的网址身份验证文档。

提供两个基本的位置请求:一个是位置搜索请求,另一个是位置详情请求。通常,位置搜索请求用于传回候选匹配项,而位置详情请求则用于传回位置的更为具体的信息。

详细:http://code.google.com/intl/zh-CN/apis/maps/documentation/places/

4.5  Google Static MapsAPI(可以用于获取位置缩略图的图片)

Google StaticMaps服务根据通过标准HTTP请求发送的网址参数来创建您的地图.

使用 Google Static Maps API时,次。由于此限制是按“查看者”规定的配额,因此大多数开发人员无需担心超出其配额。此外请注意,一般情况下对相同图片的请求,只会将第一次计入该限制次数,其他的重复请求不会计算在内。

详细:http://code.google.com/intl/zh-CN/apis/maps/documentation/staticmaps/


PPT资源地址:http://download.csdn.net/detail/zz7zz7zz/6391441

[置顶] android LBS的研究与分享(附PPT)的更多相关文章

  1. [置顶] Android开发笔记(成长轨迹)

    分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...

  2. [置顶] Android AlarmManager实现不间断轮询服务

    在消息的获取上是选择轮询还是推送得根据实际的业务需要来技术选型,例如对消息实时性比较高的需求,比如微博新通知或新闻等那就最好是用推送了.但如果只是一般的消息检测比如更新检查,可能是半个小时或一个小时一 ...

  3. [置顶] android 心跳包的分析

    android 心跳的分析 最近在做一个项目中用到了心跳包的机制,其实就是传统的长连接.或许有的人知道消息推送的机制,消息推送也是一种长连接 ,是将数据有服务器端推送到客户端这边从而改变传统的“拉”的 ...

  4. [置顶] Android 状态栏那些小坑?

    背景:因为之前老板上次问我我们的app能不能自定义上面的状态栏我说可以啊!当时没管,今天试了下果然很多坑,之前github上也有很多大佬写了一个开源库有兴趣的可以点进去看下支持DrawLayout沉侵 ...

  5. [置顶] Android 2016新技术

    版权声明:分享技术,传播快乐.如果本博客对你有帮助,请在我的博客首页为我打赏吧! 2016你需要了解Android有以下新兴的技术与框架,有些也许还不成熟,但是你应该去了解下,也许就是未来的方向. K ...

  6. [置顶] [Android源码分析]inquiry result引起的上层变化分析

    在上一篇文章中,我们详细分析了android是如何解析蓝牙反馈上来的搜索到的设备信息,本文将会继续分析这些信息到了上层之后是如何处理. 8.inquiry result引起的上层变化 我们知道inqu ...

  7. [置顶] Android系统访问控制之Smack安全策略设计与实现

    1. 制定smack规则 “Zygote”进程由init进程创建,它负责创建系统服务进程“systemserver”.“radio”进程和APP进程.其中“radio”进程的uid是1001,它能够实 ...

  8. [置顶] Android访问控制系统测试与评估

    5.1实验方案 通过以上章节,本文阐述了目前Android平台上的恶意软件以“隐私窃取”和“恶意扣费”类为主,本研究课题访问控制的目标也正是阻止恶意软件“隐私窃取”和“恶意扣费”的行为,因此,本实验方 ...

  9. [置顶] Android四大组件之BroadcastReceiver

    Android四大组件之BroadcastReceiver Broadcast Receiver 广播接收器,是一种负责接收广播消息并对消息做出响应的组件,和Service一样并不提供与用户交互的UI ...

随机推荐

  1. Qt for PC,Qt for iOS,Qt for Android (居士的博客)

    http://blog.csdn.net/Esonpo/article/details/38081607 http://blog.csdn.net/Esonpo/article/details/380 ...

  2. Apache CXF 例子

    来自:http://www.cnblogs.com/frankliiu-java/articles/1641949.html Apache CXF 是一个开放源代码框架,是在Xfire 跟Celtix ...

  3. [OJ] Data Stream Median (Hard)

    LintCode 81. Data Stream Median (Hard) 思路: 用一个大根堆保存较小的一半数, 一个小根堆保存较大的一半数. 每次根据num和两个堆顶的数据决定往哪个堆里面放. ...

  4. RPGJS 进阶分析之 如何使用RMXP导出的数据

    首先启动RMXP 在主脚本编辑区粘贴官方提供的导出数据脚本. 之后启动并进入游戏之后按F8键就可以调出导出Map和Animation的菜单 导出后的数据保存在工程目录下的RpgJs目录下. Datab ...

  5. OTG

    OTG技术就是在没有Host的情况下,实现设备间的数据传送.例如数码相机直接连接到打印机上,通过OTG技术,连接两台设备间的USB口,将拍出的相片立即打印出来:也可以将数码照相机中的数据,通过OTG发 ...

  6. file_operations结构2

    对与应用层的每个系统调用,驱动程序都有一个与之对应的函数.对于字符设备驱动程序,这些函数集合在一个file_operations类型的数据结构中,该结构体在Linux内核的include/linux/ ...

  7. SQL Server 连接字符串和身份验证详解

    SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开.          PropertyName1=Value1; ...

  8. hdu1054Strategic Game(树形DP)

    链接 归属简单树形DP 挺简单的 跟第一道一样 就是我跑偏了题意..以为要覆盖点 纠结啊 推了N久 推不出啊 然后就郁闷了 打了局游戏 边想边打 实在想不出 看下题解 跑偏了 分两种情况D 方程见代码 ...

  9. Running an etcd cluster on localhost

    Purpose Run a cluster on localhost while investigating etcd Use a static cluster (So we have no exte ...

  10. c# post文字图片至服务器

    最近由于项目需要实现c#提交文字及数据至服务器,因此研究了一下c# php数据传送: 下面用一个示例来演示,c# post文字+图片 ,php端接收: post提交数据核心代码(post数据提交) ? ...