转载自:百度地图开发者平台
百度地图LBS云是百度地图针对LBS开发者全新推出的平台级服务,不仅适用PC应用开发,同时适用移动设备应用的开发。使用LBS云,可以实现移动开发者存储海量位置数据的服务器零成本及维护压力,且支持高效检索用户数据,且实现地图展现。
注:自Android SDK v2.2.0起,SDK将支持LBS云v2版的服务,请依旧使用v1版云服务的用户尽快完成版本升级,或使用v2.2.0之前版本的SDK来进行云检索等操作。
检索LBS云内开发者自有数据的步骤如下:
第一步,数据存储:首先开发者需要将待检索数据存入LBS云;
第二步,检索:利用SDK为开发者提供的接口检索自己的数据;
第三步,展示:开发者可根据自己的实际需求以多种形式(如结果列表、地图模式等)展现自己的数据。
坐标说明
百度地图SDK接口和返回内容的坐标目前仅支持百度BD09坐标,如果您使用的是GPS WGS84坐标或国测局GCJ02坐标,需要将WGS84坐标或GCJ02坐标转换为BD09坐标。
相应的接口和转换方法请参考坐标转换,请勿使用非官方的转换方法。
LBS云检索
开发者在完成数据的LBS云端存储之后,便可调用SDK云检索服务,检索自己存储在云端的数据。具体方法如下:
第一步,实现GeoSearchListener接口;
public void onGetSearchResult(CloudSearchResult result, int error) {
//在此处理相应的检索结果
}**重点内容**
第二步,发起云检索请求;
LocalSearchInfo info = new LocalSearchInfo();
info.ak = "B266f735e43ab207ec152deff44fec8b";
//此处info.ak为服务端ak,非Adnroid sdk端ak, 且此服务端ak和Adnroid sdk端ak 是在同一个账户。
info.geoTableId = 31869;
// info.geoTableId 是存储在于info.ak相同开发账户中。
info.tags = "";
info.q = "天安门";
info.region = "北京市";
CloudManager.getInstance().localSearch(info);
第三步,运行、显示结果如下;
LBS云逆地理编码 (简称云RGC)
云逆地理编码(云RGC),是以逆地理编码服务为基础,开放的一套个性化位置描述服务。开发者可自定义用于进行逆地理编码计算的地理数据,以训练出最适用于真实业务场景的位置描述服务。如:坐标“40.055743,116.308243” 逆地理编码推荐结果为真实地物“百度大厦”,通过云逆地理编码服务,可将该坐标定义为“百度班车上车点”、“西二旗快递集中收发处”等更个性化的位置描述。
适用于如下业务场景:
1、自定义业务地点的位置描述。如,专车、拼车类开发者可定义常用上下车地点,从而根据用户当前位置进行最优推荐,提升服务效率和用户体验。
2、自定义业务片区的位置描述。如,同城配送开发者通过定义服务网点区域,可快速计算出用户订单坐标所在网点的位置描述,同时也可作为参考依据实现订单自动分拣。
3、补充重点业务地区所需且未在地图上体现的基础地物或行业专类位置描述。如,社区服务类开发者需要根据用户所在位置的场景来推送定制服务,可按需定义或丰富小区周边公共设施。
三个步骤开始使用云逆地理编码:
61e86572ea2319767344a03e27245306.png
LBS云RGC API对此功能的详细说明:
http://lbsyun.baidu.com/index.php?title=lbscloud/api/cloudrgc/about
地图SDK中开发时,需注意以下几点:
1、同一个开发者账户下的ak,可共用此账户下的“位置数据表”, 换句话说,其他开发者账户下的ak,无法使用其他账户下的“位置数据表”。
开发过程中,可使用自有的开发账户下ak和“位置数据表”调试;但上线前,必须需更改为官方账户下的ak,即可调用官方“位置数据表”。
2、开发者可通过云存储服务维护更新位置数据,实时地在云逆地理编码中体现。
3、如请求“位置数据表”提示“返回参数错误”,请检查tableid 和坐标格式是否正确。
云RGC调用方法,与云检索调用方式相同,方法如下
第一步,创建云反地理编码检索监听者;
CloudListener listen = new CloudListener() {
@Override
public void onGetSearchResult(CloudSearchResult result, int error) {
}
@Override
public void onGetDetailSearchResult(DetailSearchResult result, int error) {
}
@Override
public void onGetCloudRgcResult(CloudRgcResult result, int error) {
//获取云反地理编码检索结果
}
};
第二步,设置云反地理编码检索监听者;
CloudManager.getInstance().init( listen);
第三步,创建云反地理编码检索信息;
CloudRgcInfo info = new CloudRgcInfo();
info.geoTableId = 145801;
info.location = "40.047969,116.313718";
第四步,发起云反地理编码检索;
CloudManager.getInstance().rgcSearch(info);
第五步,释放云反地理编码检索实例;
CloudManager.getInstance().destroy();