华为 Map Kit React Native 不渲染地图

Posted

技术标签:

【中文标题】华为 Map Kit React Native 不渲染地图【英文标题】:Huawei Map Kit React Native not render the map 【发布时间】:2021-12-16 21:34:16 【问题描述】:

按照华为设置文档https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides-V1/preparedevenv-0000001050032222-V1 后,地图仍然无法在我们的应用程序上呈现。 它只是在模拟器和真实设备上显示空白屏幕而没有任何错误显示

如何让它发挥作用? 为了您的信息,我已经这样做了:

启用地图套件 api 在我的android/app 中添加了agconnect-services.json

来自日志猫

11-03 14:53:54.449 W/dynamic-api_DynamicModule( 9322): 9322-9322|null|com.huawei.hms.maps.internal.HmsUtil|isFallbackPresent|5|Query remote module:huawei_module_maps exception:com.huawei.hms.feature.dynamic.DynamicModule$a: failed to Query remote version.
11-03 14:53:54.455 D/HmsMapKit_HmsUtil_47( 9322): get fallback version failed 
11-03 14:53:54.455 D/HmsMapKit_HmsUtil_65( 9322): get hms apk version  : 0 fallbackVersion : 0
11-03 14:53:54.456 D/HmsMapKit_HmsUtil_44( 9322): isInitialized is: falserepeatFlag is: true
11-03 14:53:54.457 I/HmsMapKit_HmsUtil_169( 9322): hmsVersionStr 5.0.1.300
11-03 14:53:54.457 I/HmsMapKit_HmsUtil_197( 9322): baseVersion 50001300
11-03 14:53:54.463 E/HMSSDK_HMSPackageManager( 9322): Failed to find HMS apk
11-03 14:53:54.466 E/HMSSDK_HMSPackageManager( 9322): Failed to find HMS apk
11-03 14:53:54.466 I/HmsMapKit_AvailableAdapter_39( 9322): HMS is not installed
11-03 14:53:54.467 I/HmsMapKit_HmsUtil_226( 9322): Hms is :1
11-03 14:53:54.469 D/HmsMapKit_HmsUtil_4( 9322): Hms is resolution :
11-03 14:53:54.471 E/HMSSDK_HMSPackageManager( 9322): Failed to find HMS apk


11-03 14:53:54.513 E/ActivityThread( 9322): Failed to find provider info for com.huawei.hms
11-03 14:53:54.514 W/dynamic-api_DynamicModule( 9322): 9322-9322|null|com.huawei.hms.feature.dynamic.DynamicModule|load|25|Get hms loader info failed:failed to get :huawei_module_dynamicloader info.
11-03 14:53:54.517 W/dynamic-api_AssetLoadManager( 9322): 9322-9322||a.a.a.b.a.a|a|6|No module apk in asset path.
11-03 14:53:54.518 W/dynamic-api_DynamicModule( 9322): 9322-9322|null|com.huawei.hms.feature.dynamic.DynamicModule|load|25|No available dynamic loader in HMS and asset.
11-03 14:53:54.518 E/HmsMapKit_MapCreator_49( 9322): Loading mapRoute dynamically failed, exception is com.huawei.hms.feature.dynamic.DynamicModule$LoadingException: Cannot find a valid dynamicLoader in HMS and local.
11-03 14:53:54.519 E/HmsMapKit_MapCreator_28( 9322): getRemoteMapContext failed
11-03 14:53:54.521 D/HmsMapKit_MapView_4( 9322): getMapAsync:


【问题讨论】:

使用 flex:1 确保地图容器具有完整尺寸 @HassanKandil 已经这样做了,仍然是空白 权限怎么样?检查developer.huawei.com/consumer/en/doc/development/… @HassanKandil 也这样做了。如果我遗漏了某些内容,我会从文档中翻倍检查,但所有内容都像文档中写的那样 【参考方案1】:

这个问题可能有不同的原因。请检查如下:

检查AppGallery Connect中是否启用了Map Kit API。如果没有,打开它,下载.json文件替换代码中已有的,然后检查SHA256指纹是否正确。

在 Android 的 Map SDK 5.0.0.300 或更高版本中,您必须在初始化地图之前设置 API 密钥。

(1)在你的项目入口类中设置API key。

   // In the entrance class (inherited from android.app.Application) of the app,
    // call the setApiKey method in the overridden onCreate() method. 
    public class MyApp extends Application 
        @Override
        public void onCreate() 
            super.onCreate();
           // Set the API key.
            MapsInitializer.setApiKey("Your API Key");
        
    

(2) 在 Fragment 或 MapView 中设置 API 密钥。

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        Log.i(TAG, "onCreate: ");
        super.onCreate(savedInstanceState);
        // Set the API key before calling setContentView.
        MapsInitializer.setApiKey("Your API Key");
        setContentView(R.layout.basic_demo);

目前HuaweiMap支持两种地图。确定您正在使用的类型。

MAP_TYPE_NORMAL:标准地图,显示道路、人工结构和河流等自然特征。

MAP_TYPE_NONE:没有任何数据的空地图。

您也可以参考this answer。

【讨论】:

这一步,在你的项目入口类中设置API key,在Fragment或者MapView中设置API key,这是为了react native设置吗? 我在developer.huawei.com/consumer/en/doc/development/… 上也读到过,它说 setApiKey “如果 agconnect-services.json 文件中的 api_key 字段已经指定了 API 密钥,则不需要调用此方法。”我们的 agconnect-services.json 已经有了 hi@Vina,请您提供完整的日志,以便我们分析您的问题。您可以通过以下步骤获取完整的日志。 adb logcat -c && adb logcat -vtime > logcat1.txt 嗨,感谢您回复@shirley,我用一些 logcat 更新了我的问题 hi@@Vina,根据日志:11-03 14:53:54.466 E/HMSSDK_HMSPackageManager( 9322): Failed to find HMS apk,请问您使用的手机是华为手机,没有安装HMS Core APK吗?

以上是关于华为 Map Kit React Native 不渲染地图的主要内容,如果未能解决你的问题,请参考以下文章

React Native 开发中 Apple Health Kit 的虚假步骤数据

react-native-chart-kit 问题检查渲染方法

在 HMS Push Kit 和 React Native 中收到通知时,如何获取应用自动处理的通知?

在 android studio 中无法获取华为 Map Kit 的 com.huawei.hms.location.LocationServices

无法使用 Firebase ML Kit Vision 文本检测器编译 iOS React Native 应用程序

React Native中react-native-baidu-map的安装与使用