Huawei Map Kit - onMapReady() 未在 getMapAsync() 之后调用

Huawei Map Kit - onMapReady() not called after getMapAsync()

我正在尝试创建一个使用 google 地图的项目的定位器功能的华为变体。但我的问题是 onMapReady() 回调在 getMapAsync()

之后根本不会触发

这就是我调用 getMapAsync 的方式:

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

当调用 onMapReady() 时使用 google 地图依赖项时这工作正常。

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

onMapReady 方法需要重新加载。下面介绍如何使用SupportMapFragment. For more details, see 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文件中,加载SupportMapFragment in the onCreate() method and call getMapAsync()注册回调。 示例代码如下:
private SupportMapFragment mSupportMapFragment; 
mSupportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapfragment_mapfragmentdemo);
mSupportMapFragment.getMapAsync(this);
  1. 调用onMapReady callback to obtain the HuaweiMap对象。 示例代码如下:
public void onMapReady(HuaweiMap huaweiMap) {
    Log.d(TAG, "onMapReady: ");     
    hMap = huaweiMap;
}
  1. 运行您的项目,然后安装您的应用程序以在您的应用程序中查看地图。

由于您使用的是华为的地图工具包,请检查以下内容: 您已经生成了一个 sha256 密钥并集成了 HMS 核心,您可以使用此 link 了解具体方法。

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

最后要检查的是,如果您已经完成

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