简介

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

您将建立什么

开发者通过地图服务SDK可以开发地图相关的App,比如:

您将会学到什么

硬件要求

软件要求

集成Map Kit能力,需要完成以下准备工作:

具体操作,请按照《HUAWEI HMS Core集成准备》中详细说明来完成。

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

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

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

1、添加应用的AppGallery Connect配置文件。

(a) 下载应用中的"agconnect-services.json"配置文件。

(b) 将"agconnect-services.json"配置在模块级目录下,如下图所示。

2、添加编译依赖。

(a) 打开应用级的build.gradle文件。

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

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

(c) 在文件头添加配置 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:map="http://schemas.android.com/apk/res-auto" android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" map:cameraTargetLat="51" map:cameraTargetLng="10" map:cameraZoom="8.5" map:mapType="normal" map:uiCompass="true" map:uiZoomControls="true" /> </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; /** * 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) { 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); } // please replace "Your API key" with api_key field value in // agconnect-services.json MapsInitializer.setApiKey("Your API 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的生命周期。文件位置:\mapdemo\app\src\main\java\com\wz\android\mapdemo\MainActivity.java
    @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. 确认是否已开启所需权限。文件位置:\mapdemo\app\src\main\java\com\wz\android\mapdemo\MainActivity.java
    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、造成返回码010001或010002可能的原因?

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

3、您可以点击下方按钮下载源码。

源码下载

已复制代码