4

我已按照此处此处的文档(非常简单),但地图视图不加载任何图块。

我使用HMS Toolkit,配置向导成功。我还设置了我的 api 密钥,在我的应用程序类和我的活动类 onCreate 中都使用了这一行。

MapsInitializer.setApiKey(HUAWEI_API_KEY);

以下是设备信息和 SDK 版本:

  • 手机型号:华为 Y7 Prime 2018
  • EMUI版本:8.0.0
  • HMS核心版本:6.1.0.305
  • 地图SDK版本:com.huawei.hms:maps:6.0.0.301

这是屏幕:

在此处输入图像描述

相关错误日志:

E/HmsMapKit_MapView_151: createDelegate: creator == null

E/HmsMapKit_GrsClient_24:GRS 返回空。

E/HmsMapKit_ErrorTraceLogPusher_4:缓存错误跟踪日志:ErrorTraceLogDTO{scenario = GET_GRS_URL_FAILED', message='GRS返回空,服务名称为com.huawei.hms.map。'}

E/HmsMapKit_ErrorTraceLogPusher_12:eventId 为空或为空。

E/HmsMapKit_AuthenticateClient_27:com.huawei.hms.maps.foundation.client.c出现异常

E/HmsMapKit_ErrorTraceLogPusher_4:缓存错误跟踪日志:ErrorTraceLogDTO{ 场景 = ACCESS_SERVICE_ERROR',消息 ='060001:NETWORK_ERROR'}

E/HmsMapKit_AuthenticateCache_0:认证错误,抛出 RetryException。

E/HmsMapKit_CopyrightDelegate_27:获取版权声明html数据失败:htmlData = null

E/HmsMapKit_TileCache_38: startUrlRequest 身份失败,没有权限获取磁贴。身份验证结果:060011

PS:我对这个演示有完全相同的问题。

4

2 回答 2

0

您需要生成并上传到 AppGallery Connect两个 SHA-256 密钥,一个用于调试版本,一个用于发布。

要为调试版本生成密钥,您需要:

  1. 打开命令
  2. 运行命令cd [path to directory with keytool.exe file] 例如:cd C:\Program Files\Java\jdk1.8.0_301\bin
  3. 运行命令keytool -list -v -keystore [path to debug.keystore]\debug.keystore -alias androiddebugkey -storepass android -keypass android
  4. 复制 SHA-256 密钥并将其添加到AppGallery Connect -> 项目设置 -> 应用信息 -> SHA-256 证书指纹

对于发布版本,一切都一样,但在 2 步中替换用于签署发布版本的密钥的路径,并在 3 步中输入真实的发布别名和密码

于 2022-02-09T15:13:06.617 回答
0

首先你可以参考这个文档看看是否有错误代码。

官方demo也运行不正确。所以问题很可能是由签名或 API 密钥问题引起的。

请检查如下:

  • 检查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 key。

@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);

有关此问题的不同原因的详细信息,您也可以参考此答案

于 2021-09-07T01:25:18.210 回答