baiduLocation

来自于:官方立即使用

概述

baiduLocation 封装了百度地图定位的 SDK。百度地图定位 SDK 是为移动端应用提供的一套简单易用的LBS定位服务接口,专注于为广大开发者提供最好的综合定位服务,通过使用百度定位SDK,开发者可以轻松为应用程序实现智能、精准、高效的定位功能。该套SDK免费对外开放,接口使用无次数限制。在使用前,您需先申请密钥(ak)才可使用。任何非营利性应用请直接使用,商业目的产品使用前请参考使用须知。在您使用百度地图Android SDK之前,请先阅读百度地图API使用条款

不能同时添加的模块:baiduMap,aMap

开发者使用本模块之前需先去百度地图开放平台申请开发者账号,创建自己的 APP 从而获取 ak,本模块所需的 ak 与 baiduMap 模块、bMap 模块所需的密钥可以共用。

使用此模块之前必须先配置 config 文件,配置方法如下:

  • 名称:baiduLocation
  • 参数:apiKey
  • 配置示例:
  <feature name="baiduLocation">
    <param name="apiKey" value="f7Is0dWLom2q6rV3ZfFPZ1aa" />
  </feature>
  • 字段描述:

    apiKey:在百度地图开放平台申请的 ak(iOS平台上的key)

【注意】 该模块从 1.0.6 版本开始,Android端需要添加此配置在config.xml中才可使用此模块

    <meta-data
        name="com.baidu.lbsapi.API_KEY"
        value="WP99x2mSUWEysZxUaMh0GiGCYhBV8CQI" />

如果不配置 config.xml 则模块会去读 baiduMap 模块的 key(其实两个key都是在百度地图开放平台申请的同一个key)。但 baiduMap 模块现已停止更新,用bMap模块替换。所以最好还是每个模块单独配置每个模块的key,模块之间相互独立,互不干涉依赖。

注意:getLocation 接口无法设置 accuracy、filter、autoStop 这些参数,当调用getLocation 时,模块底层会先做个判断,如果已经调用过 startLocation 并且已经定位成功获取位置信息,则将此位置信息返回(所以这个位置信息有很大可能不是实时的)。若没调用过startLocation 则模块内部自己先 startLocation,此时 accuracy、filter、autoStop 这些参数取默认值。定位到信息后则返回定位到的信息。所以建议先调用 startLocation 再getLocation。

模块接口

startLocation

开始定位

startLocation({params}, callback(ret, err))

params

accuracy:

  • 类型:字符串
  • 描述:(可选项)精度
  • 默认:100m
  • 取值范围:
    • 10m
    • 100m
    • 1km
    • 3km

filter:

  • 类型:数字
  • 描述:(可选项)位置更新所需最小距离(单位米)
  • 默认:1.0

autoStop:

  • 类型:布尔
  • 描述:(可选项)获取到位置信息后是否自动停止定位
  • 默认:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true,               //布尔类型;操作成功状态值
    longitude:116.213,         //数字类型;经度
    latitude:39.213,           //数字类型;纬度
    accuracy: 65,              //数字类型;本次定位的精度,仅支持 iOS 平台
    timestamp:1396068155591    //数字类型;时间戳
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:""    //字符串类型;错误描述
}

示例代码

var baiduLocation = api.require('baiduLocation');
baiduLocation.startLocation({
    accuracy: '100m',
    filter: 1,
    autoStop: true
}, function(ret, err) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopLocation

停止定位

stopLocation()

示例代码

var baiduLocation = api.require('baiduLocation');
baiduLocation.stopLocation();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getLocation

获取位置信息

getLocation(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    longitude:116.213,           //数字类型;经度
    latitude:39.213,             //数字类型;纬度
    accuracy: 65,              //数字类型;本次定位的精度,仅支持 iOS 平台
    timestamp:1396068155591      //数字类型;时间戳
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg:""                     //字符串类型;错误描述
}

示例代码

var baiduLocation = api.require('baiduLocation');
baiduLocation.getLocation(function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本