评论

收藏

[Android] 应用缺少POI数据,如何开发地点深度信息?

移动开发 移动开发 发布于:2022-08-18 10:28 | 阅读数:257 | 评论:0

用户在App里搜索某个地点时,并不满足单一的地点信息,希望得到更多可以帮助其做决策的深度信息。例如有打车出行需求的用户,在打车App里搜索地点时可以显示周边的地点,精确到某个路口,让用户可以自由选择合适的上下车点。银行金融App类可以让用户在搜索时显示附近线下网点和营业时间、电话以及周边道路信息等。
不过在App里开发搜索地点的相关信息功能需要大量的地点数据等信息,面对数据不够的情况,怎么才能开发提供用户在查看不同类型的地点(如酒店、餐饮、景点)时,可以获取到有针对性的深度信息(如营业时间、评分等)的能力呢?
HMS Core位置服务提供一站式搜索服务,拥有2.6+亿全球POI数据,覆盖200+国家与地区,支持全球70+种语言。其中地点详情功能可以根据地点的唯一主键地点ID获取地点详情,地点详细信息请求返回有关指定地点的更全面的信息, 如地点名称、地址详细信息、经纬度等。比如用户打开物流类App可以搜索到附近网点、营业时间、电话等;旅行类App提供搜索景点具体的位置、附近的酒店、天气等;LBS类游戏也可以基于地点详情功能做相关改编,在游戏内搜索某地点时可以查看该地点的任务、玩家、区域排名等。
DSC0000.png

Demo演示
DSC0001.png

开发步骤
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);

关注下面的标签,发现更多相似文章