文档管理中心

此版本文档已归档不再维护,推荐您使用最新版本

指南地图服务Android SDK从 Google Maps 迁移到 HUAWEI Map Kit

从 Google Maps 迁移到HUAWEI Map Kit

1 概览

本教程将从最基本的环境配置开始,帮助您尽快将Android应用程序从Google Map SDK for Android切换到Map Kit提供的SDK for Android。除此之外,还提供了一些基本用例,如创建地图、添加标记等。在总结部分,我们提供了自动化工具的获取链接,该工具可以帮助您完成手动切换的工作。

2 开发准备

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

  • 创建AppGallery Connect应用

  • 创建Android Studio工程

  • 生成签名证书以及签名证书指纹

  • 在AppGallery Connect上配置签名证书指纹

  • 集成HMS SDK

  • 配置项目签名

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

3 创建地图

本小节内容将介绍使用Google和HUAWEI Map Kit创建地图的步骤。

3.1 Google Map SDK

1. 将编译依赖添加到模块的build.gradle文件中:

收起
自动换行
深色代码主题
复制
  1. implementation 'com.google.android.gms:play-services-maps:15.0.0'

2. 在Activity的布局文件中添加加一个fragment:

收起
自动换行
深色代码主题
复制
  1. <fragment
  2.   android:id="@+id/mapFragment"
  3.   android:name="com.google.android.gms.maps.MapFragment"
  4.   android:layout_width="match_parent"
  5.   android:layout_height="match_parent"/>

3. 在manifest.xml文件的application部分内添加一个Google Android API密钥:

收起
自动换行
深色代码主题
复制
  1. <meta-data
  2.   android:name="com.google.android.geo.API_KEY"
  3.   android:value="YOUR_GOOGLE_KEY_GOES_HERE"/>

3.2 Map Kit

1. 将编译依赖添加到模块的build.gradle文件中:

收起
自动换行
深色代码主题
复制
  1. implementation 'com.huawei.hms:maps:4.0.1.301'

2. 在Activity的布局文件中添加加一个fragment:

收起
自动换行
深色代码主题
复制
  1. <fragment
  2.   xmlns:map="http://schemas.android.com/apk/res-auto"
  3.   android:id="@+id/mapfragment_mapfragmentdemo"
  4.   class="com.huawei.hms.maps.MapFragment"
  5.   android:layout_width="match_parent"
  6.   android:layout_height="match_parent"
  7.   map:cameraTargetLat="48"
  8.   map:cameraTargetLng="118"/>

4 添加标记

本小节内容将介绍使用Google和HUAWEI Map Kit添加标记的步骤。

4.1 Google Map SDK

1. 定义一个GoogleMap对象和一个MapFragment对象:

收起
自动换行
深色代码主题
复制
  1. private GoogleMap gMap;
  2. private MapFragment mapFragment;

2. 实现OnMapReadyCallback接口,并重写onMapReady方法:

收起
自动换行
深色代码主题
复制
  1. @Override
  2. public void onMapReady(GoogleMap googleMap) {
  3.    gMap = googleMap;
  4.    LatLng amsterdam = new LatLng(52.37, 4.90);
  5.    gMap.addMarker(new MarkerOptions().position(amsterdam).title("Amsterdam"));
  6.    gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(amsterdam, 8));
  7. }

3. 在Activity的onCreate方法中加载MapFragment,并调用getMapAsync():

收起
自动换行
深色代码主题
复制
  1. mapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.mapFragment);
  2. mapFragment.getMapAsync(this);

4.2 Map Kit

1. 定义一个HuaweiMap对象和一个MapFragment对象:

收起
自动换行
深色代码主题
复制
  1. private HuaweiMap hMap;
  2. private MapFragment mMapFragment;

2. 实现OnMapReadyCallback接口,并重写onMapReady方法:

收起
自动换行
深色代码主题
复制
  1. @Override
  2. public void onMapReady(HuaweiMap map) {
  3. // after call getMapAsync method ,we can get HuaweiMap instance in this callback method
  4.   hMap = map;
  5.   hMap.addMarker(new MarkerOptions().position(new LatLng(31.2304, 121.4737)).icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_background)));
  6.   hMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(31.2304, 121.4737), 10));
  7. }

3. 在Activity的onCreate方法中加载MapFragment,并调用getMapAsync():

收起
自动换行
深色代码主题
复制
  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3.   super.onCreate(savedInstanceState);
  4.   setContentView(R.layout.activity_map_fragment_demo);
  5.   mMapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.mapfragment_mapfragmentdemo);
  6.   mMapFragment.getMapAsync(this);
  7. }


注意:

如果您使用v2版本的Google Map SDK for Android,切换到Map Kit,需要将包名com.google.android.gms.maps替换成com.huawei.hms.maps;如果您使用v3版本的Google Map SDK for Android,切换到Map Kit,需要将包名com.google.android.libraries.maps替换成com.huawei.hms.maps(替换包名可以使用Android Studio的Edit > Find > Replace in Path…)。

5 总结

上述内容是介绍了Google Map与Map Kit的异同,我们提供了自动化工具来高效完成从Google Map切换到Map Kit或者添加Map Kit的步骤,下面是关于工具的介绍以及使用指导:

HMS ToolKit - 概述

Map Kit 转换指导书

本页面可能包含由第三方许可的内容,请参考具体描述
在 指南 中进行搜索
请输入您想要搜索的关键词