概述
LBS模块可以获取玩家的位置信息,并获取附近的玩家的信息,让玩家可以和自己周边的玩家进行互动。
显示详情接入向导
Android 3.3.15a 版本开始新增 MSDKLbs.jar
,对外接口保持不变,如不需要LBS能力,直接删除MSDKLibrary/libs/MSDKLbs.jar
文件即可。
1 前置条件
1) 您已经按初始化模块说明完成 初始化
2) 调用LBS接口需要先登录QQ/微信
2 注册回调
概述
获取附近的人接口WGGetNearbyPersonInfo()和清空自己位置信息接口WGCleanLocation()的结果会通过回调函数OnLocationNofity() 返回给您。获取自己位置信息接口WGGetLocationInfo()的结果通过回调 OnLocationGotNotify() 返回给您。
获取自己位置信息回调
1)功能描述
获取自己位置信息回调
2)接口声明
void OnLocationGotNotify(LocationRet &ret)
3)参数说明
返回值名称 | 参数类型 | 说明 |
---|---|---|
ret | LocationRet | 玩家位置信息类 |
4)返回值
无
5)示例代码
virtual void OnLocationGotNotify(LocationRet &locationRet)
{
LOGD("OnLocationGotNotify longitude %f", locationRet.longitude);
LOGD("OnLocationGotNotify latitude %f", locationRet.latitude);
std::stringstream ss;
ss << "OnLocationGotNotify";
// 解决浮点数0.000在demo上显示不完善问题
if (locationRet.flag == eFlag_Succ)
{
ss << " longitude:" << locationRet.longitude << " latitude:" << locationRet.latitude;
}
else
{
ss << " longitude:" << 0 << " latitude:" << 0;
}
displayResult(ss.str());
}
6)特殊说明
无
7)名称解释
无
获取附近的人与清空自己位置信息回调
1)功能描述
获取附近的人与清空自己位置信息回调
2)接口声明
void OnLocationNotify(RelationRet &ret)
3)参数说明
返回值名称 | 参数类型 | 说明 |
---|---|---|
ret | RelationRet | 玩家信息的集合类 |
4)返回值
无
5)示例代码
virtual void OnLocationNotify(RelationRet &relationRet)
{
LOGD("OnLocationNotify flag %d", relationRet.flag);
std::stringstream ss;
ss << "OnLocationNotify";
ss << " flag:" << relationRet.flag << " friends total:" << relationRet.persons.size();
switch (relationRet.flag)
{
case eFlag_Succ:
{
// relationRet.persons.at(0) 中保存的即是个人信息
for (int i = 0; i < relationRet.persons.size(); i++)
{
std::string city = relationRet.persons.at(i).city;
std::string gender = relationRet.persons.at(i).gender;
std::string nickName = relationRet.persons.at(i).nickName;
std::string openId = relationRet.persons.at(i).openId;
std::string pictureLarge = relationRet.persons.at(i).pictureLarge;
std::string pictureMiddle = relationRet.persons.at(i).pictureMiddle;
std::string pictureSmall = relationRet.persons.at(i).pictureSmall;
std::string provice = relationRet.persons.at(i).provice;
ss << "\ncity=" << city << "&";
ss << "gender=" << gender << "&";
ss << "nickName=" << nickName << "&";
ss << "openId=" << openId << "&";
ss << "pictureLarge=" << pictureLarge << "&";
ss << "pictureMiddle=" << pictureMiddle << "&";
ss << "pictureSmall=" << pictureSmall << "&";
ss << "provice=" << provice << "&";
}
break;
}
default:
break;
}
displayResult(ss.str());
}
6)特殊说明
无
7)名称解释
无
3 调用lbs接口获取信息
此时您可以调用MSDK接口,获取地理位置信息了,详情参见获取玩家位置信息,获取附近的人,清空位置信息。
恭喜您完成了lbs功能接入工作!
获取玩家位置信息
1 概要说明
获取玩家的地理位置信息:经纬度。
2 注册回调
请参见 注册回调
3 接口调用
1)功能描述
获取玩家的地理位置信息:经纬度。
2)接口声明
bool WGGetLocationInfo();
3)参数说明
无
4)返回值及回调说明
没有返回值。获取的结果会通过注册并实现回调函数中的OnLocationGotNotify()回调函数,携带LocationRet返回。
5)示例代码
WGPlatform::GetInstance()->WGGetLocationInfo();
6)特殊说明
无
7)名称解释
无
获取附近的人
1 概要说明
获取当前玩家附近的玩家信息。
2 注册回调
请参见 注册回调
3 接口调用
1)功能描述
获取当前玩家附近的玩家信息,结果信息通过 OnLocationNotify(RelationRet ret)回调函数携带的RelationRet返回。
2)接口声明
void WGGetNearbyPersonInfo();
3)参数说明
无
4)返回值
没有返回值。获取的结果会通过注册回调中的附近人的信息将通过 OnLocationNotify(RelationRet ret)回调函数携带的RelationRet返回给您。
5)代码示例:
WGPlatform::GetInstance()->WGGetNearbyPersonInfo();
6)特殊说明
无
7)名称解释
RelationRet.flag值表示返回状态, 可能值(eFlag枚举)如下:
eFlag_LbsNeedOpenLocationService: 需要引导用户开启定位服务
eFlag_LbsLocateFail: 定位失败, 可以重试
eFlag_Succ: 获取附近的人成功
eFlag_Error: 定位成功, 但是请求附近的人失败, 可重试
RelationRet.persons是一个Vector, 其中保存了附近玩家的信息 详见常量查询
清空位置信息
1 概要说明
清空位置信息接口可以清除自己的位置信息,当其他玩家获取附近的人时无法获取此玩家的信息。
2 注册回调
请参见 注册回调
3 接口调用
1)功能描述
调用清空位置信息接口可以清除自己的位置信息,当其他玩家获取附近的人时无法获取此玩家的信息,结果信息通过 OnLocationNotify(RelationRet ret)回调函数携带的RelationRet返回。
2)接口声明
bool WGCleanLocation();
3)参数说明
无
4)返回值
没有返回值。获取的结果会通过注册并实现回调函数中的 OnLocationNotify(RelationRet ret)回调函数,携带RelationRet返回。
5)示例代码
WGPlatform::GetInstance()->WGCleanLocation();
6)特殊说明
无
7)名称解释
RelationRet.flag值表示返回状态, 可能值(eFlag枚举)如下:
eFlag_LbsNeedOpenLocationService: 需要引导用户开启定位服务
eFlag_LbsLocateFail: 定位失败, 可以重试
eFlag_Succ: 清除成功
eFlag_Error: 清除失败, 可重试
获取 IP 信息
1 概要说明
MSDK 提供了基于用户出口 IP 的位置信息服务,当前可以提供国家、省、市信息,以满足业务需求。说明:如果用户使用 VPN、网络代理、加速器(部分)等场景,MSDK 会获取到对应服务器的 IP 位置信息。详情可参考MSDK IP 获取位置信息服务说明。3.3.271 版本开始新增该接口。
2 注册回调
class MyObserver : public WGPlatformObserver
{
public:
...
// 获取 IP 信息回调
void OnLocationGetIPInfoNotify(GetIPInfoRet& ipInfoRet);
...
};
3 接口调用
WGPlatform::GetInstance()->WGGetIPInfo();