常见问题

百度地图定位SDK是否收费?

目前完全免费开放,百度地图定位SDK已申请了国家专利,因此要遵守百度地图相关使用条款。

具体条款请参见:http://lbsyun.baidu.com/index.php?title=open/law

百度地图定位SDK是否有接口限制?

目前没有任何限制,但不支持多线程并发访问。

百度地图定位SDK使用什么坐标系?

百度地图定位SDK,根据开发者的输入参数设置,可以返回三种类型的坐标,分别是BD09、BD09ll和GCJ-02,其中BD09ll能无偏差地显示在百度地图上。

如果当前定位点为海外,默认只能返回WGS-84类型的坐标。

后缀ll=经纬度球面坐标,mc=墨卡托平面坐标。

坐标体系是否遵循国家对地理信息保密要求?

百度对外接口的坐标系,都是经过国家测绘局加密处理,符合国家测绘局对地理信息保密要求。

百度采用何种坐标体系?

百度地图API中采用两种坐标体系,经纬度坐标系和墨卡托投影坐标系。前者单位是度,后者单位是米,具体定义可以参见百科词条解释: http://baike.baidu.com/view/61394.htmhttp://baike.baidu.com/view/301981.htm

百度坐标为何有偏移?

国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02坐标系对地理位置进行首次加密。百度坐标在此基础上,进行了BD09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。

如何从其他体系的坐标迁移到百度坐标?

百度地图坐标转换API是一套以HTTP形式提供的坐标转换接口

http://developer.baidu.com/map/index.php?title=webapi/guide/changeposition

该接口适用于需将非百度地图坐标的坐标进行转化,进而将其运用到百度地图开发的用户。该接口还支持批量坐标转化,一次最多可转换100个坐标点。

在百度地图SDK(Android/iOS)产品中也提供了类似的坐标转换接口。具体请参考:

Android地图SDK:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/tool#.E5.9D.90.E6.A0.87.E8.BD.AC.E6.8D.A2

iOS地图SDK:http://lbsyun.baidu.com/index.php?title=iossdk/guide/tool#.E5.9D.90.E6.A0.87.E8.BD.AC.E6.8D.A2

百度地图定位SDK和百度地图API移动版有什么区别?

百度地图定位SDK是专业的定位工具,采用WiFi、基站、GPS混合定位,返回百度坐标,并能正确地显示在百度坐标系的地图上。误差不超过50米。百度地图定位SDK适用于Android系统,iOS请使用苹果自带的定位系统。

百度地图API移动版,是地图API在Android系统和iOS系统上的地图接口程序,有兴趣点查询、公交驾车、添加覆盖物等功能。

如果只使用定位功能,Android定位SDK更省资源。

百度地图定位SDK的精度如何?

基站精度为平均200米左右,视运营商基站覆盖范围而定。

WiFi精度为20米左右。

GPS精度最高,为10米左右(取决于芯片)。

在户外,先开启GPS再进行定位,结果较准。但GPS比较费电,且在室内不可用。在室内,我们提供了高精度的室内定位能力,定位精度达1-3米。

在返回精确的经纬度信息同时,我们还将当前地点的地址信息、位置描述信息、周边POI信息一并返回,便于广大开发者使用。

百度地图定位SDK的定位策略是什么?

混合GPS+基站+WiFi定位,百度地图定位SDK会根据环境自动调整定位策略。

当然,您也可以通过参数控制,优先使用某种定位模式。

为何我的程序无法定位成功?

1、您需要确保程序编译通过。如果对自己写的代码有疑问,可以参照官方demo开发,或查看标准源代码。

2、请检查AndroidManifest.xml是否加入了相关PERMISSION和SERVICE声明。

3、在确认测试手机架构的前提下,检查是否引入了SO文件。目前Android定位SDK已经提供所有架构下的SO文件。

4、请确保网络通畅,无论是连接WiFi还是使用2G/3G信号。

5、定位SDK的调用必须在主线程中。

6、必须在定位SDK启动前设定好参数,例如是否使用GPS,扫描时间间隔设置等。强烈建议开发者设置并保管好自己的prodName,这样方便我们为您提供更好的定位保障服务。

7、定位SDK start之后立即执行,这种情况下很难定位成功,因为定位SDK刚开始启动还没有获取到定位信息。这时getLocation一般为null。如果是要获取位置成功,可以在listerner中添加一个判断如果strData为空,则再发起一次定位。

8、定位成功率在99.5%以上。建议打开WiFi,或者尝试走到别的地方,多试几次即可成功定位。

9、请使用真机,且插上SIM卡。在虚拟机上无法进行定位测试。

定位SDK中的LocationClient. isStarted()表征未启动

定位SDK启动时是异步启动的,start之后不会立即返回,所以立刻去检查isStarted状态就返回未启动;实际上定位SDK在start之后会默认发起一次定位请求,开发者无须检查这个函数,只要等着定位回调就可以了。

能返回方向信息吗?

目前只有在GPS可用时能返回有效的方向信息,在GPS无效时,也可以配置选择返回手机方向传感器的数值,但有可能跟用户真实的方向信息有误差。

at com.baidu.location.LocationClient.byte(Unknown Source)报空指针

一般是由于开发者没有设定listener导致的,请参考DEMO具体开发逻辑,正确配置SDK。

如何处理定位SDK坐标发生漂移或者误差较大的情况?

1、如偏移概率很高时,请确认自己设置的坐标系与展示地图的坐标系一致,目前定位SDK支持三种坐标系类型,其中BD09ll可以无偏移的展示在百度地图上。(坐标转换API:http://developer.baidu.com/map/index.php?title=webapi/guide/changeposition)

2、如果在确认坐标系无误的情况,定位结果仍发生了很大的偏移,请将IMEI号和大体定位时间反馈至邮箱loc-bugs@baidu.com。

如何定位更省电?

1、开启API并获取到位置信息后,就手动stop()。

2、根据需要选择后台服务和及时扫描。setServiceMode设置服务模式,主要可以设置两种模式:Background(后台服务模式)、Immediat(即时扫描服务模式)。

Background为后台服务模式,实现策略是后台每隔设定的时间扫描一次定位依据信息,判定位置是否改变,如果改变,生成定位依据加密串。在此模式下,用户可以调用getLocation来根据当前的定位加密串从服务器获取定位依据。也可以实现并注册一个接口LocationChangedListener,当locationChanged的时候,被调用。

Immediat为即时扫描服务模式。在此模式下,后台不扫描。当用户想获取当前位置时,需要实现并注册一个接口ReceiveListener,然后调用startLocating函数,会异步地发起WiFi扫描。当有结果时,定位SDK会调用接口函数。

3、在大部分机器上,GPS初次定位需要1分钟,有的甚至要两分钟才能定位。初次定位以后,再次定位会快很多。

位置变化时,如何重新定位?

Android定位SDK提供2种定位模式,定时定位和APP主动请求定位。

当setScanSpan < 1000时,为 APP主动请求定位; 当setScanSpan>=1000时,为定时定位模式(setScanSpan的值就是定时定位的时间间隔)。

定时定位模式中,定位SDK会按照APP设定的时间定位进行位置更新,定时回调定位结果。此种定位模式适用于希望获得连续定位结果的情况。

对于单次定位类应用,或者偶尔需要一下位置信息的应用,可采用APP主动请求定位这种模式。

什么是GPS定位、基站定位和WiFi定位?

1、GPS定位:根据设备GPS芯片和GPS卫星实现定位,GPS定位在室内是不可以使用的。GPS定位精度与芯片以及实际使用环境有关,一般情况下,GPS定位精度在10m左右。

2、基站定位:根据设备获取的基站信息实现定位,基站定位精度一般不受使用环境影响,主要和基站的覆盖半径有关。百度的基站定位服务精度目前在200m左右。

3、WiFi定位:根据设备获取的WiFi的信息实现定位,WiFi定位精度一般不受使用环境影响,主要和WiFi半径、WiFi分布密度有关。目前百度的WiFi定位服务精度目前在20m左右。

三种定位模式(高精度模式,低功耗模式,仅用设备模式)的定位策略分别是什么?

1、高精度模式定位策略:这种定位模式下,会同时使用网络定位和GPS定位,优先返回最高精度的定位结果;

2、低功耗模式定位策略:该定位模式下,不会使用GPS进行定位,只会使用网络定位(WiFi定位和基站定位);

3、仅用设备模式定位策略:这种定位模式下,不需要连接网络,只使用GPS进行定位,这种模式下不支持室内环境的定位。