华为地图套件 - 在 getMapAsync() 后未调用 onMapReady()

问题描述

我正在尝试为使用谷歌地图的项目创建定位器功能的华为变体。但我的问题是 onMapReady() 回调在 getMapAsync() 之后根本不会触发

这就是我调用 getMapAsync 的方式:

     val mapFragment = childFragmentManager.findFragmentById(R.id.fragment_huawei_map_container) as SupportMapFragment
     mapFragment.getMapAsync(this@SampleMapsFragment)

当 onMapReady() 被调用时,这在使用谷歌地图依赖时工作正常。

但是在使用华为地图依赖时,getMapAsync()后根本不触发onMapReady回调

解决方法

由于您使用的是华为地图套件,请检查以下内容: 您已生成 sha256 密钥并集成了 HMS 核心,您可以使用此 link 了解如何操作。

如果您已完成上述所有操作,请确保 agconnect-services.json 位于正确的位置。然后,检查您的清单中是否有:
enter image description here

最后要检查的是,如果您已经完成 enter image description here

我希望其中之一会有所帮助,因为我能够让 onMapReady 触发:

enter image description here

,

onMapReady 方法需要重新加载。下面介绍如何使用 SupportMapFragment 创建地图实例。如需了解详情,请参阅docs

  1. 在布局文件中添加一个Fragment对象(例如activity_main.xml),并在文件中设置地图属性
<fragment xmlns:android="http://schemas.android.com/apk/res/android"        
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:id="@+id/mapfragment_mapfragmentdemo"
    class="com.huawei.hms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:cameraTargetLat="48.893478"
    map:cameraTargetLng="2.334595"
    map:cameraZoom="10" />
  1. 要在您的应用中使用地图,请在 MainActivity.java 文件中实现 OnMapReadyCallback API。 示例代码如下:
public class SupportMapDemoActivity extends AppCompatActivity implements OnMapReadyCallback {
    ...
}
  1. MainActivity.java 文件中,在 onCreate() 方法中加载 SupportMapFragment 并调用 getMapAsync() 来注册回调。 示例代码如下:
private SupportMapFragment mSupportMapFragment; 
mSupportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapfragment_mapfragmentdemo);
mSupportMapFragment.getMapAsync(this);
  1. 调用 onMapReady 回调获取 HuaweiMap 对象。 示例代码如下:
public void onMapReady(HuaweiMap huaweiMap) {
    Log.d(TAG,"onMapReady: ");     
    hMap = huaweiMap;
}
  1. 运行您的项目,然后安装您的应用以在您的应用中查看地图。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...