应用缺少POI数据,如何开发地点深度信息?
用户在App里搜索某个地点时,并不满足单一的地点信息,希望得到更多可以帮助其做决策的深度信息。例如有打车出行需求的用户,在打车App里搜索地点时可以显示周边的地点,精确到某个路口,让用户可以自由选择合适的上下车点。银行金融App类可以让用户在搜索时显示附近线下网点和营业时间、电话以及周边道路信息等。
不过在App里开发搜索地点的相关信息功能需要大量的地点数据等信息,面对数据不够的情况,怎么才能开发提供用户在查看不同类型的地点(如酒店、餐饮、景点)时,可以获取到有针对性的深度信息(如营业时间、评分等)的能力呢?
HMS Core位置服务提供一站式搜索服务,拥有2.6+亿全球POI数据,覆盖200+国家与地区,支持全球70+种语言。其中地点详情功能可以根据地点的唯一主键地点ID获取地点详情,地点详细信息请求返回有关指定地点的更全面的信息, 如地点名称、地址详细信息、经纬度等。比如用户打开物流类App可以搜索到附近网点、营业时间、电话等;旅行类App提供搜索景点具体的位置、附近的酒店、天气等;LBS类游戏也可以基于地点详情功能做相关改编,在游戏内搜索某地点时可以查看该地点的任务、玩家、区域排名等。
Demo演示
开发步骤
1. 开发准备
1.1 配置AppGallery Connect
在开发应用前,需要在AppGallery Connect中配置相关信息。
1.2 集成HMS Core SDK
针对Android Studio开发环境,华为提供了Maven仓集成方式的HMS Core SDK包。在开始开发前,您需要将HMS Core SDK集成到您的Android Studio开发环境中。
1.3 配置混淆脚本
编译APK前需要配置混淆配置文件,避免混淆HMS Core SDK导致功能异常。
详细准备步骤可参考华为开发者联盟官网。
2. 地点详情
// 声明SearchService对象
private SearchService searchService;
// 创建SearchService实例
searchService = SearchServiceFactory.create(this, "
API key
");
// 创建请求体
DetailSearchRequest request = new DetailSearchRequest();
request.setSiteId("
C2B922CC4651907A1C463127836D3957
");
request.setLanguage("
fr
");
request.setChildren(
false
);
// 创建搜索结果侦听器
SearchResultListener<DetailSearchResponse> resultListener = new SearchResultListener<DetailSearchResponse>() {
// 正常结果返回
@Override
public void onSearchResult(DetailSearchResponse result) {
Site site;
if (result == null || (site = result.getSite()) == null) {
return;
}
Log.i("TAG", String.format("siteId: '%s', name: %s\r\n", site.getSiteId(), site.getName()));
}
// 异常结果返回
@Override
public void onSearchError(SearchStatus status) {
Log.i("TAG", "Error : " + status.getErrorCode() + " " + status.getErrorMessage());
}
};
// 调用地点详情接口
searchService.detailSearch(request, resultListener);
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~