本文纲要

  1. 我的项目背景
  2. 集成筹备
  3. 次要代码
  4. 成绩展现

一、本我的项目用到的性能点:

地图服务(Map Kit)给您提供一套地图开发调用的SDK,地图数据笼罩超过200个国家和地区,反对数百种语言,不便您轻松地在利用中集成地图相干的性能,全方位晋升用户体验。

关键字搜寻:通过指定的关键字和可选的天文范畴,查问诸如旅游景点、企业和学校之类的地点。

门路布局: 是一套以HTTPS模式提供的步行、骑行、驾车门路布局以及行驶间隔计算接口,通过JSON格局返回门路查问数据,提供门路布局能力。

二、集成筹备

1. AGC账号注册,我的项目创立

1) 注册成为开发者

注册地址:
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html?ha_source=hms1

1) 创立利用,增加sha256,开启map/site开关,下载json文件

2. 集成Map + Site SDK

1) 将“agconnect-services.json”文件拷贝到利用级根目录下

  • 在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。
  • 在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。
  • 如果App中增加了“agconnect-services.json”文件则须要在“buildscript > dependencies”中减少agcp配置。
buildscript {     repositories {         maven { url 'https://developer.huawei.com/repo/' }         google()         jcenter()     }     dependencies {         classpath 'com.android.tools.build:gradle:3.3.2'         classpath 'com.huawei.agconnect:agcp:1.3.1.300'     } }  allprojects {     repositories {         maven { url 'https://developer.huawei.com/repo/' }         google()         jcenter()     } }

2) 在“dependencies ”中增加如下编译依赖

dependencies {     implementation 'com.huawei.hms:maps:{version}'     implementation 'com.huawei.hms:site:{version}' }

3) 在文件头增加配置

apply plugin: 'com.huawei.agconnect'

4) 在android中配置签名。将生成签名证书指纹生成的签名文件复制到您工程的app目录下,并在“build.gradle”文件中配置签名。

signingConfigs {    release {        // 签名证书            storeFile file("**.**")            // 密钥库口令            storePassword "******"            // 别名            keyAlias "******"            // 密钥口令            keyPassword "******"            v2SigningEnabled true        v2SigningEnabled true    }}buildTypes {    release {        minifyEnabled false        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        debuggable true    }    debug {        debuggable true    }}

三、 我的项目中用到的次要代码及性能

  1. 文本搜寻:通过实现Site Kit中的textSearch性能实现文本内容搜寻并展现进去。
SearchResultListener<TextSearchResponse> resultListener = new SearchResultListener<TextSearchResponse>() {     // Return search results upon a successful search.     @Override     public void onSearchResult(TextSearchResponse results) {         List<Site> siteList;         if (results == null || results.getTotalCount() <= 0 || (siteList = results.getSites()) == null                 || siteList.size() <= 0) {             resultTextView.setText("Result is Empty!");             return;         }          mFirstAdapter.refresh(siteList);          StringBuilder response = new StringBuilder("\n");         response.append("success\n");         int count = 1;         AddressDetail addressDetail;         Coordinate location;         Poi poi;         CoordinateBounds viewport;         for (Site site : siteList) {             addressDetail = site.getAddress();             location = site.getLocation();             poi = site.getPoi();             viewport = site.getViewport();             response.append(String.format(                     "[%s] siteId: '%s', name: %s, formatAddress: %s, country: %s, countryCode: %s, location: %s, poiTypes: %s, viewport is %s \n\n",                     "" + (count++), site.getSiteId(), site.getName(), site.getFormatAddress(),                     (addressDetail == null ? "" : addressDetail.getCountry()),                     (addressDetail == null ? "" : addressDetail.getCountryCode()),                     (location == null ? "" : (location.getLat() + "," + location.getLng())),                     (poi == null ? "" : Arrays.toString(poi.getPoiTypes())),                     (viewport == null ? "" : viewport.getNortheast() + "," + viewport.getSouthwest())));         }         resultTextView.setText(response.toString());         Log.d(TAG, "onTextSearchResult: " + response.toString());     }      // Return the result code and description upon a search exception.     @Override     public void onSearchError(SearchStatus status) {         resultTextView.setText("Error : " + status.getErrorCode() + " " + status.getErrorMessage());     } }; // Call the place search API. searchService.textSearch(request, resultListener);
  1. 步行门路布局:通过调用Map Kit 中的API接口实现数据回调并出现在地图上。点击可获取API文档。
NetworkRequestManager.getWalkingRoutePlanningResult(latLng1, latLng2,        new NetworkRequestManager.OnNetworkListener() {            @Override            public void requestSuccess(String result) {                generateRoute(result);            }            @Override            public void requestFail(String errorMsg) {                Message msg = Message.obtain();                Bundle bundle = new Bundle();                bundle.putString("errorMsg", errorMsg);                msg.what = 1;                msg.setData(bundle);                mHandler.sendMessage(msg);            }        });

四、我的项目成绩展现

欲了解更多详情,请参阅:
华为开发者联盟官网:https://developer.huawei.com/...
获取开发领导文档:https://developer.huawei.com/...
参加开发者探讨请到Reddit社区:https://www.reddit.com/r/Huaw...
下载demo和示例代码请到Github:https://github.com/HMS-Core
解决集成问题请到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0202436666167160224?fid=18

原作者:胡椒