乐趣区

关于android:简单的路径规划案例分享

本文纲要

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

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

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

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

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

二、集成筹备

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

(1)注册成为开发者

注册地址:

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

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

  1. 集成 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/consumer/cn/hms?ha_source=hms1
获取开发领导文档:https://developer.huawei.com/consumer/cn/doc/development?ha_source=hms1
参加开发者探讨请到 Reddit 社区:https://www.reddit.com/r/HuaweiDevelopers/
下载 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
作者:胡椒

退出移动版