TencentLocation

概述

TencentLocation 封装了腾讯定位原生 SDK ,集成了腾讯定位的常用基本接口。使用本插件可以轻松实现单次定位、连续定位、后台定位、场景定位等功能。

注意事项:

使用本插件前需要先获取AppKey

  1. 进入控制台进行选择我的应用并创建应用
  2. 填写应用信息并勾选条款
  3. 只需要使用定位功能,不需要对AppKey做额外设置

得到AppKey之后,需要配置 config.xml 文件,配置方法如下:

<widget>
    <meta-data name="TencentMapSDK" value="您申请的Key"/>
</widget>

配置 config 文件

在iOS端申请的 AK,需要配置在 config.xml 文件内。配置方法如下:

  • 名称:TencentLocation
  • 参数:apiKey
  • 配置示例:
  <feature name="TencentLocation"> 
    <param name="ios_api_key" value="P5KBZ-JB5K3-TH63A-3UFIP-WFAQZ-3SBT4" />
  </feature>
  • 字段描述:

    ios_api_key:在腾讯开放平台申请的 iOS 版 ak

注意:

在 iOS 平台上,若要支持后台定位需配置 config.xml 文件的 location 字段。应用打包前勾选申请前后台定位提示语。

privacyCompliance

申请同意隐私政策。使用本插件必须首先实现本方法,同意定位 SDK 的隐私政策后才能正常使用定位SDK功能

privacyCompliance({param})

params

agreeprivacy:

  • 类型:布尔值
  • 描述:用户是否同意隐私政策
  • 取值范围:
    • true:已同意
    • false:不同意

实例代码

var locationSDK = api.require('TencentLocation');
var param = {
    "agreeprivacy":true
}
locationSDK.privacyCompliance(param);	    

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

authorizationStatus

获取当前 app 定位权限,仅支持iOS端

authorizationStatus(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:""		//数字类型;状态码
                    //0:NotDetermined
                    //1:Restricted
                    //2:Denied
                    //3:AuthorizedAlways
                    //4:AuthorizedWhenInUse
}

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.authorizationStatus(function(ret){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

iOS系统

可提供的1.0.0及更高版本

requestAlwaysAuthorization

请求前后台运行时的定位权限,仅支持iOS端

requestAlwaysAuthorization()

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.requestAlwaysAuthorization();

可用性

iOS系统

可提供的1.0.0及更高版本

requestWhenInUseAuthorization

请求使用app时的定位权限,仅支持iOS端

requestWhenInUseAuthorization()

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.requestWhenInUseAuthorization();

可用性

iOS系统

可提供的1.0.0及更高版本

singlePosition

发起单次定位,只返回一次定位结果。一般情况下,单次定位只会返回网络定位信息

singlePosition(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:""		//布尔类型;true||false
    msg:""			//字符串类型;取值范围:
                    //"定位成功"(定位成功时会返回此字段)
                    //"定位失败,请检查您的网络"(由于网络原因导致的定位失败会返回此字段)
                    //"定位失败,请检查是否打开定位权限"(由于定位权限原因导致的定位失败会返回此字段)
    nation:""		//国家
    province:""		//省
    city:""			//市
    address:""		//地址
    buildingName:""	//所处建筑名称
    latitude:""		//纬度
    longitude:""	//经度
    provider:""		//字符串类型;定位来源
                    //error:错误,可能未开启
                    //drunkown:定位结果来源未知
                    //fusion:定位结果来源融合的结果
                    //GPS:定位结果来源GPS
                    //netWork:定位结果来源网络
}

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.singlePosition(function(ret){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

stopSinglePosition

停止单次定位,仅支持 iOS 端

stopSinglePosition()

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.stopSinglePosition();

可用性

iOS系统

可提供的1.0.0及更高版本

multiplePosition

发起连续定位。用户发起一次定位请求后,按照用户指定的周期返回定位结果

multiplePosition({params},callback(ret))

params

timer:

  • 类型:数字类型
  • 描述:(选填项)周期返回定位结果的间隔时间,单位为毫秒,不得小于1000毫秒
  • 默认值:1000ms

useGPS:

  • 类型:布尔类型
  • 描述:(选填项)是否允许使用 GPS,建议用户开启,在室外场景可以显著提升定位精度
  • 默认值:false

useDirection:

  • 类型:布尔类型
  • 描述:(选填项)是否需要获取传感器方向
  • 默认值:false

useIndoorLocationMode:

  • 类型:布尔类型
  • 描述:(选填项)是否开启室内定位。开启后,内部将启动适配室内定位的策略。如果用户定位场景在室内时建议开启
  • 默认值:false

level:

  • 类型:数字类型
  • 描述:(选填项)设置请求等级,不同请求等级会返回不同详细程度的定位结果
  • 默认值:0
  • 取值范围:
    • 0:定位结果返回{latitude,Longitude}
    • 1:定位结果返回{address,name,latitude,Longitude}
    • 3:定位结果返回{nation,address,name,latitude,Longitude}(一般情况下建议取该值)
    • 4:定位结果返回{nation,latitude,Longitude}

pattern:

  • 类型:字符串类型
  • 描述:设置定位模式,不同定位模式返回的定位精度不同
  • 取值范围:
    • "highAccuracy":高精度定位模式,将同时使用网络定位和卫星定位,优先返回精度高的定位
    • "onlyNetwork":仅网络定位模式,将不启动GPS定位,可以减少耗电量,但定位精度有所降低
    • "onlyGPS":仅GPS定位模式,将只返回GPS定位结果,在室外可提高精度,如果超过时间内无GPS结果,则返回网络结果,超时时间为8秒

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:""			//布尔类型;true||false
    msg:""				//字符串类型;取值范围:
                        //"定位成功"(定位成功时会返回此字段)
                        //"定位失败,请检查您的网络"(由于网络原因导致的定位失败会返回此字段)
                        //"定位失败,请检查是否打开定位权限"(由于定位权限原因导致的定位失败会返回此字段)
    nation:""			//国家
    province:""			//省份
    city:""				//城市
    address:""			//地址
    buildingName:""		//所处建筑名称
    latitude:""			//纬度
    longitude:""		//经度
    provider:""			//定位来源
}

示例代码

var locationSDK = api.require('TencentLocation');
var param = {
    "timer":5000,
    "useGPS":true,
    "useDirection":true,
    "useIndoorLocationMode":true,
    "requestLevel":3,
    "pattern":"highAccuracy"
}
locationSDK.multiplePosition(param,function(ret){
    console.log(JSON.stringify(ret));
})}

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

stopMultiplePosition

停止连续定位

stopMultiplePosition()

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.stopMultiplePosition();

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

startUpdatingHeading

开启更新定位朝向,仅支持 iOS 端

startUpdatingHeading({params},callback(ret))

params

timer:

  • 类型:数字类型
  • 描述:(选填项)周期返回定位结果的间隔时间,单位为毫秒,不得小于1000毫秒
  • 默认值:1000ms

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{ 
    status:,               //布尔类型;是否成功   
    magneticHeading:""		//数字类型;磁场方向,0为正北
    trueHeading:""		   //数字类型;地理方向,0为正北
    headingAccuracy:""	   //数字类型;精度
    timestamp:""		      //字符串类型;时间戳
}

示例代码

var locationSDK = api.require('TencentLocation'); 
locationSDK.startUpdatingHeading({
   timer:2000
},function(ret){
    console.log(JSON.stringify(ret));
})

可用性

iOS系统

可提供的1.0.0及更高版本

stopUpdatingHeading

结束更新定位朝向,仅支持iOS 端

stopUpdatingHeading()

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.stopUpdatingHeading();

可用性

iOS系统

可提供的1.0.0及更高版本

backgroundPosition

开启后台定位。当 App 进程处于后台时并且有需求使用定位服务时使用。如果您的应用已经存在前台服务,那么不需要使用后台定位方法

注意:本接口仅支持 Android 端,iOS端配置后台功能即可

backgroundPosition({params},callback(ret))

params

timer:

  • 类型:数字类型
  • 描述:(选填项)周期返回定位结果的间隔时间,单位为毫秒,不得小于1000毫秒
  • 默认值:1000 ms

useGPS:

  • 类型:布尔类型
  • 描述:(选填项)是否允许使用 GPS
  • 默认值:false

useDirection:

  • 类型:布尔类型
  • 描述:(选填项)是否需要获取传感器方向
  • 默认值:false

useIndoorLocationMode:

  • 类型:布尔类型
  • 描述:(选填项)是否开启室内定位。开启后,内部将启动适配室内定位的策略。如果用户定位场景在室内时建议开启
  • 默认值:false

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:""			//布尔类型;true||false
    msg:""				//字符串类型;取值范围:
                        //"定位成功"(定位成功时会返回此字段)
                        //"定位失败,请检查您的网络"(由于网络原因导致的定位失败会返回此字段)
                        //"定位失败,请检查是否打开定位权限"(由于定位权限原因导致的定位失败会返回此字段)
    nation:""			//国家
    province:""			//省份
    city:""				//城市
    address:""			//地址
    buildingName:""		//所处建筑名称
    latitude:""			//纬度
    longitude:""		//经度
    provider:""			//定位来源
}

示例代码

var locationSDK = api.require('TencentLocation');
var param = {
    "timer":3000,
    "useGPS":true,
    "useDirection":true,
    "useIndoorLocationMode":true,
}
locationSDK.backgroundPosition(param,function(ret){
    console.log(JSON.stringify(ret));
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

stopBackgroundPosition

停止后台定位服务

注意:本接口仅支持 Android 端,iOS端配置后台功能即可

stopBackgroundPosition()

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.stopBackgroundPosition();

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

scenePosition

根据场景请求定位。根据不同需求场景返回适合当前场景的定位结果

注意:本接口只支持 Android 端

scenePosition({param},callback(ret))

params

scenc:

  • 类型:字符串类型
  • 描述:定位场景
  • 取值范围:
    • "sign",签到场景,单次定位,第一次会优先返回精度比较高的结果,延迟时间在1 ~ 3s
    • "sport",运动场景,高精度连续定位,适用于步行或骑车定位,第一次会优先返回精度比较高的结果
    • "travel",出行场景,高精度连续定位,适用于室外出行场景,优先使用卫星定位结果

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status:""			//布尔类型;true||false
    msg:""				//字符串类型;取值范围:
                        //"定位成功"(定位成功时会返回此字段)
                        //"定位失败"(由于定位场景选择错误导致的定位失败会返回此字段)
    address:""			//地址
    buildingName:""	 	//所处建筑名称
    latitude:""			//维度
    Longitude:""		//经度
    altitude:""			//海拔
    cityCode:""			//所处城市的城市代码
    province:""			//省
    district:""			//区
    town:""				//镇
}

示例代码

var locationSDK = api.require('TencentLocation');
var param = {
    "scenc":"sport"
}
locationSDK.scenePosition(param,function(ret){
    console.log(JSON.stringify(ret));
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

stopScenePosition

停止场景定位

注意:本接口只支持Android端

stopScenePosition()

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.stopScenePosition();

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

calculateDistance

根据两位置的经纬度,计算两点之间的距离

calculateDistance({param},callback(ret))

params

aLatitude:

  • 类型:数字类型
  • 描述:A点纬度

aLongitude:

  • 类型:数字类型
  • 描述:A点经度

bLatitude:

  • 类型:数字类型
  • 描述:B点纬度

bLongitude:

  • 类型:数字类型
  • 描述:B点经度

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    distance:""		//数字类型;两点之间距离
}

示例代码

var locationSDK = api.require('TencentLocation');
var param = {
    aLatitude:40,
    aLongitude:50,
    bLatitude:50,
    bLongitude:50
}
locationSDK.calculateDistance(param,function(ret){
    api.alert({msg: JSON.stringify(ret)});
})

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

distanceContains

判断一个点是否在一个圆形区域内。通过传入中心点的经纬度、圆形区域的半径和当前位置的经纬度进行判断

注意:本接口只支持Android端

distanceContains({params},callback(ret))

params

centerLatitude

  • 类型:数字类型
  • 描述:中心点纬度

centerLongitude

  • 类型:数字类型
  • 描述:中心点经度

latitude

  • 类型:数字类型
  • 描述:需要判断点的纬度

longitude

  • 类型:数字类型
  • 描述:需要判断点的经度

radius

  • 类型:数字类型
  • 描述:区域半径

callback(ret)

{
    status:""		//布尔类型;取值范围:
                    //true(当前位置坐标处于圆形区域内会返回该字段)
                    //false(当前位置坐标未处于圆形区域内会返回该字段)
}

示例代码

var locationSDK = api.require('TencentLocation');
var param = {
    "centerLatitude":40,
    "centerLongitude":41.5,
    "latitude":40,
    "longitude":41.50111,
    "radius":1000
}
locationSDK.distanceContains(param,function(ret){
    api.alert({msg: JSON.stringify(ret)});
})

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

positioningAid

判断用户设备是否支持GPS、是否使用GPS定位、是否使用网络定位

注意:本接口只支持Android端

positioningAid(callback(ret))

callback(ret)

{
    isSupportGPS:""		//布尔类型;true||false
    isFromGps:""		//布尔类型;true||false
    isFromNetwork:""	//布尔类型;true||false
}

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.positioningAid(function(ret){
    api.alert({msg: JSON.stringify(ret)});
})

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

onFootOrRidePosition

启动步骑行惯导。步骑惯导是在GPS定位的基础上融合传感器信号进行的推导,针对步骑行场景做的强化。步骑行惯导生效需要满足条件包括GPS,且系统传感器插件可用。注意:

1.该方法只用于启动步骑行惯导,不能获取惯导结果,惯导结果使用 getFootOrRidePosition() 获取

2.步骑惯导和连续定位会有冲突,在确定应用场景对步骑型强相关时再使用该API,且无需启动连续定位

onFootOrRidePosition({param},callback(ret))

params

pattern:

  • 类型:字符串类型
  • 描述:惯导场景
  • 取值范围:
    • "walk":步行场景
    • "bike":骑行场景

callback(ret)

{
    "status":""				//布尔类型;true||false
    "msg":""				//字符串类型;取值范围:
                            //"步骑行惯导启动成功"(步骑行惯导启动成功返回此字段)
                            //"步骑行惯导启动失败"(步骑行惯导启动失败返回此字段)
                            //"模式选择错误"(惯导场景传入错误字符时返回此字段)
                            //"当前设备不支持惯导功能"(设备不支持惯导功能时返回此字段)
}

示例代码

var locationSDK = api.require('TencentLocation');
var param = {
    "pattern":"walk"
}
locationSDK.onFootOrRidePosition(param,function(ret){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

getFootOrRideResult

获取步骑行惯导定位结果

注意:调用本方法前需要先调用 onFootOrRidePosition() 方法

getFootOrRideResult(callback(ret))

callback(ret)

{
    status:""		//布尔类型;true
    nation:""		//国家
    buildingName:"" //所处建筑名称
    province:""		//省
    city:""			//市
    district:""		//区
    street:""		//街道
    streetNo:""		//门号
    town:""			//镇
    address:""		//地址
    latitude:""		//维度
    Longitude:""	//经度
}

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.getFootOrRidePosition(function(ret){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

Android系统

可提供的1.0.0及更高版本

stopFootOrRidePosition

停止步骑行惯导

stopFootOrRidePosition()

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.stopFootOrRidePosition(function(ret){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

Android系统

可提供的1.0.0及更高版本

notAllowAnalogGPS

定位反作弊功能。识别和阻止模拟GPS定位结果。

notAllowAnalogGPS(callback(ret))

callback(ret)

{
    "status":""							//布尔类型;true||false
    "msg":"当前位置信息存在信号模拟行为"	   //字符串类型;当定位信息存在模拟信号行为会返回此字段
}

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.notAllowAnalogGPS(function(ret){
    console.log(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

allowAnalogGPS

停止定位反作弊功能

allowAnalogGPS(callback(ret))

callback(ret)

{
    "msg":"定位反作弊功能已停止"		//字符串类型;当反作弊功能停止运行时返回此字段
}

示例代码

var locationSDK = api.require('TencentLocation');
locationSDK.allowAnalogGPS(function(ret){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

Android系统

可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/10/10