baiduLocation


baiduLocation封装了百度定位的相关功能,使用此模块可获取当前位置信息。 需要开发者到百度地图API官网注册应用后得到秘钥AK,并填写到相应的配置文件中。配置文件路径为 hybrid/app/pluginConfigs.xml

如何创建应用

申请密钥Android定位SDK

Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key
访问API控制台页面,若您未登录百度账号,将会进入百度账号登录页面,如下图:

image

登陆API控制台

登录会跳转到API控制台服务,具体如下图:

image

创建应用

点击"创建应用",进入创建AK页面,输入应用名称,将应用类型改为:“Android SDK”:

image

image

配置应用

在应用类型选为“Android SDK”后,需要配置应用的安全码,如下图所示:

image

获取安全码

输入“安全码”。安全码的组成规则为:Android签名证书的sha1值+“;”+packagename(即:数字签名+分号+包名) 注意:中间的分号为英文状态下的分号! 您可以通过两种方法来获取Android签名证书的sha1值:(需事先配置好Android环境)

获取sha1值 第一种方法:使用keytool 第1步:运行进入控制台

image

image

第2步:定位到.android文件夹下,输入cd .android

image

第3步:输入keytool -list -v -keystore debug.keystore,出现输入密钥库口令,输入android(注:此处输入密钥默认隐藏),会得到三种指纹证书,选取SHA1类型的证书。
其中keytool为jdk自带工具;keystorefile为Android 签名证书文件

image

image

第二种方法:在adt 22中直接查看
如果使用adt 22,可以在eclipse中直接查看:winows -> preferance -> android -> build。 如下图示:

image

其中“SHA1 fingerprint”值即为Android签名证书的sha1值

获取包名
包名是Android应用程序本身在AndroidManifest.xml 中定义的名称,例如:
image

成功创建KEY

在输入安全码后,点击“确定”完成应用的配置工作,您将会得到一个创建的Key,请妥善保管您所申请的Key。到这您就可以使用新Key来完成您的开发工作了。

申请密钥 iOS SDK

百度地图iOS SDK开发密钥的申请地址为:http://lbsyun.baidu.com/apiconsole/key

申请步骤如下:

第一步:打开API控制台,如下图所示:

image

第二步:点击创建应用,开始申请开发密钥,如下图:

image

第三步:填写应用名称、应用类型注意选择“iOS SDK”、正确填写安全码,点击确认,系统将会自动帮您生成相应的开发密钥:

image

第四步:控制台列表中的“访问应用(ak)”就是您在开发过程中需要用到的开发密钥,请妥善保管。

注:密钥被删除后,对应程序中的SDK功能将不可用。误删的ak可以从回收站中找回。

安全码简介
在申请开发密钥的时候,需要填写对应工程的安全码。这里的安全码指的是该应用的Bundle Identifier,获取方式如下: Xcode切换到Summary标签查看Bundle Identifier

如下图示:

image

pluginConfigs.xml配置文件:
  • BDLOCATION_APIKEY_iOS:( String ) 必选 配置iOS百度定位所需的秘钥AK。需要到百度地图API官网申请。
  • BDLOCATION_APIKEY_ANDROID:( String ) 必选 配置Android百度定位所需的秘钥AK。需要到百度地图API官网申请。

配置如下:

<configs>
    <config pluginName="baiduLocation">
        <android>
            <param key="BDLOCATION_APIKEY_ANDROID" value="Dtz0eBqsocMNt9SdooBr5NlT"></param>
        </android>
        <ios>
            <param key="BDLOCATION_APIKEY_iOS" value="NjKf72NiCHa2csbUOg1Ku8it"></param>
            <param key="WhenInUseUsageDescription" value="应用程序向您申请定位授权"></param>
            <param key="AlwaysUsageDescription" value="应用程序向您申请定位授权"></param>
        </ios>
    </config>
        <config pluginName="InfoPlistEdit">
    <ios>
        <param key="AllowAllHttpConnection" value="true"></param>
    </ios>
</config>
 <!--注:以下内容是为适配iOS9所需的配置-->  
  <config pluginName="InfoPlistEdit">
      <ios>
          <param key="AllowAllHttpConnection" value="true"></param>
      </ios>
   </config>
</configs>

方法:

对象:

回调方法:

关于iOS9支持:

getLocation


开始定位

rd.baiduLocation.getLocation(SuccessCB,ErrorCB);
说明:

开始定位,当成功获取位置信息后将通过SuccessCB回调函数返回,定位出错时通过ErrorCB回调函数返回错误信息。

参数:
  • successCB: ( successCallback ) 必选 获取设备位置信息成功的回调函数
  • errorCB: ( errorCallback ) 必选 获取设备位置信息失败的回调函数
返回值:

无返回值

示例:
rd.baiduLocation.getLocation(SuccessCallback,ErrorCallback);

locationInfo


JSON对象 获取的定位信息

locationInfo
{
   property String latitude,
   property String longitude,
   property String timestampa,
   property String addr,
   property String country,
   property String city,
   property String district,
   property String province,
   property String street
}
属性:
  • latitude: ( String ) 纬度
  • longitude: ( String ) 经度
  • timestamp: ( String ) 定位时的时间戳
  • addr: ( String ) 所在具体位置描述
  • country: ( String ) 所在国家 注iOS不支持该属性
  • province: ( String ) 所在省份
  • city: ( String ) 所在城市
  • district: ( String ) 所在区
  • street: ( String ) 街道

successCallback


获取设备位置信息成功的回调函数。

function successCallback(locationInfo) {
    var lat = locationInfo.latitude;
    var lon = locationInfo.longitude;
    var t = locationInfo.timestamp;
}
参数:
  • locationInfo: ( locationInfo ) 必选 获得的定位信息
返回值:

无返回值

示例:
function successCallback(locationInfo) {
    var lat = locationInfo.latitude;
    var lon = locationInfo.longitude;
    var t = locationInfo.timestamp;
    var address = locationInfo.addr;
}

errorCallback


定位失败信息。

 function errorCallback(errMsg) {
    alert(errMsg);
}
参数:
  • errMsg:( String ) 必选 定位失败信息
返回值:

无返回值

示例:
function errorCallback(errMsg) {
    alert(errMsg);
}    

关闭HTTPS请求协议


为了强制增强数据访问安全,iOS9默认会把大部分的HTTP请求都改为HTTPS请求。本插件基于百度定位集成.目前官网没有针对iOS9的HTTPS协议做出更新操作. 所以,如果想在iOS9环境下使用本插件.则需要在pluginConfig.xml中进行配置。配置方式如下:

<!--找到InfoPlistEdit节点 在这里设置HTTPS相关参数.-->
<config pluginName="InfoPlistEdit">
    <ios>
        <!--true:表示开启http协议模式;false:表示关闭http协议模式,采用https请求协议.-->
         <param key="AllowAllHttpConnection" value="true"></param>
    </ios>
</config>
说明:

将以上配置参数拷贝至项目中的pluginConfig.xml文件中即可.若已有相同的配置项.则不需要再次拷贝.在原基础上添加即可.