简介

华为地图 SDK 是一套Android系统地图开发调用的接口,地图数据可以覆盖海外绝大多数国家,支持多种语言。华为地图采用WGS84 GPS坐标系,满足绝大多数海外地图开发的需求。开发者可以轻松地在自己的Android应用中加入地图相关的功能,包括:

您将建立什么

开发者通过华为地图SDK可以开发围绕地图展开的APP,比如:

您将会学到什么

硬件要求

软件要求

集成HUAWEI HMS能力,需要完成以下准备工作:

1、在华为开发者联盟AppGallery Connect的应用页面中点击"开发"页签,点击"概览"后的图标,选择"API管理"。

2、打开"Map Kit"服务开关。

至此,已经为创建的应用开通了"地图"服务。

1、打开Android Studio,选择File – New – New Project,选择Empty Activity, 新建工程。

2、配置HMS SDK的maven仓地址。

3、添加编译依赖。
(a) 打开应用级的build.gradle文件。

(b) 在"dependencies "中添加如下编译依赖。

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

© 在文件头添加配置 apply plugin: ‘com.huawei.agconnect'。

1、在AndroidManifest.xml中application同级标签添加权限申请。

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

2、在layout中添加MapView 。

文件位置: \mapdemo\app\src\main\res\layout\activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.huawei.hms.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" map:mapType="normal" map:uiCompass="true" map:uiZoomControls="true" map:cameraTargetLat="51" map:cameraTargetLng="10" map:cameraZoom="8.5"/> </LinearLayout>

3、在活动中添加MapView的调用。

文件位置:\mapdemo\app\src\main\java\com\wz\android\mapdemo\MainActivity.java

package com.wz.android.mapdemo; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import com.huawei.hms.maps.HuaweiMap; import com.huawei.hms.maps.MapView; import com.huawei.hms.maps.OnMapReadyCallback; import com.huawei.hms.maps.util.LogM; /** * map activity entrance class */ public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { private static final String TAG = "MapViewDemoActivity"; //HUAWEI map private HuaweiMap hMap; private MapView mMapView; private static final String MAPVIEW_BUNDLE_KEY = "MapViewBundleKey"; @Override protected void onCreate(Bundle savedInstanceState) { LogM.d(TAG, "onCreate:hzj"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //get mapview instance mMapView = findViewById(R.id.mapView); Bundle mapViewBundle = null; if (savedInstanceState != null) { mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY); } mMapView.onCreate(mapViewBundle); //get map instance mMapView.getMapAsync(this); } @Override public void onMapReady(HuaweiMap map) { //get map instance in a callback method Log.d(TAG, "onMapReady: "); hMap = map; } }

4、调用MapView的生命周期。

@Override protected void onStart() { super.onStart(); mMapView.onStart(); } @Override protected void onStop() { super.onStop(); mMapView.onStop(); } @Override protected void onDestroy() { super.onDestroy(); mMapView.onDestroy(); } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { super.onResume(); mMapView.onResume(); }

5、确认是否以开启所需权限。

private static boolean hasPermissions(Context context, String... permissions) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && permissions != null) { for (String permission : permissions) { if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { return false; } } } return true; }

编译、加载、调试

使用Android Studio自带的Gradle编译工具,击installDebug,即可安装Demo。

调测准备

打开开发调试版本的地图Demo后,查看地图是否能够展示。

干得好,你已经成功完成了Codelab并学到了:

1、由于鉴权服务器存在缓存机制,如果注册成功之前,访问过服务器鉴权失败,错误的数据会在服务器保存24小时,这种情况不管怎么重新注册都是错的。
但是可以直接访问以下链接查看数据是否正确,只需将链接中的appId替换
https://api.cloud.huawei.com/rest.php?nsp_svc=nsp.scope.app.get&nsp_fmt=json&appid=101023239&type=2

示例代码下载

源码下载

2、更多关于华为地图服务的功能,请参考
文档链接

已复制代码