地图:GMS 有效,HMS 无效; onMapReady 未调用

Map: GMS works, HMS dont; onMapReady not called

我在一个 android 项目中同时使用了 GMS 和 HMS。 GMS 版本有效,但 HMS 不调用 onMapReady 回调。这是代码:


    private var mMap: HuaweiMap? = null
    private var mapFragment: SupportMapFragment? = null

 private fun setMapFragment() {
        mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?
        mapFragment!!.getMapAsync(this)
        mapFragment!!.view!!.isClickable = false
    }

    override fun onMapReady(huaweiMap: HuaweiMap) {
        mMap = huaweiMap
        loadMap()
    }

我以为 GMS 和 HMS 的实现方式相同,但我想我错了。 HMS 是否需要比 GMS 或其他东西更多的权限才能使其工作?

确保你实现了 OnMapReadyCallback 并且你需要在调用之前在 onCreate 地图方法中传递 Bundle mapFragment!!.getMapAsync(this) :

 val mapViewBundle: Bundle? = null
 mapFragment!!.onCreate(mapViewBundle)
 mapFragment!!.getMapAsync(this)

该问题为已知bug,将于2020年11月9日修复。

目前,可以使用变通方法:

  1. 改变SupportMapFragement to MapView.
  2. 回退SDK版本。