1

即使我执行了所有实现,也没有加载地图的原因可能是什么?

4

5 回答 5

2

确保所有这些

在应用级 build.gradle

dependencies { 
implementation 'com.huawei.hms:maps:4.0.1.302'

}

在清单中

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission 
android:name="com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA"/>

//To obtain current device location
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

提供实时权限

private void requestPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    Log.i(TAG, "sdk >= 23 M");
    if (ActivityCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
            || ActivityCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        String[] strings =
                {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};
        ActivityCompat.requestPermissions(this, strings, 1);
    }
}
}

之后在 onCreate() 或 onCreateView() 方法中加载 MapView 并调用 getMapAsync() 注册回调。

希望这会奏效。

于 2020-07-24T17:45:07.683 回答
1

原因不止一个。我将提到导致此问题的一些原因:

  1. 确保在华为开发者的应用中启用了 MAP 套件。

  2. 确保在 Build.Gradle 应用程序中添加 Map Kit 的依赖项。

  3. 确保您在开发者中输入的 SHA-256 证书指纹在应用程序中是相同的。

  4. 确保您在 build.gradle 应用程序中输入了签名配置。

于 2020-07-23T21:18:29.697 回答
1

1.) 确保在 AppConnect 中启用 MapKit

2.) 确保您的 agconnect-services.json 已针对您选择的风格正确加载

3.) 确保 json 包名称与您应用的 applicationId 匹配

4.) 确保提供的 SHA-256 证书指纹与您用于签署应用程序的证书相同

5.) 确保您确实签署了申请

到目前为止,这与现有答案相同,因此还有一件事需要注意:

6.)确保您使用的证书是SHA256withRSA(当您可以检查 SHA1、SHA256 等时,您会看到这个)

7.) 还要确保当您拥有 时agconnect-services.json,您还可以在 API Services -> Credentials 页面上设置密钥库签名。

于 2020-12-18T09:23:46.847 回答
0

In my case it was because of mismatch SupportMapFragment and MapFragment used in layout and code.

Layout:

<fragment xmlns:map="http://schemas.android.com/apk/res-auto"
            android:id="@+id/mapFragment"
            class="com.huawei.hms.maps.SupportMapFragment" />

Code:

val mapFragment = childFragmentManager.findFragmentById(R.id.mapFragment) as SupportMapFragment?
于 2021-05-25T06:37:48.553 回答
0

地图未加载的最常见原因是客户端未向地图服务器发送正确的凭据,并且地图服务器未返回包含地图数据的响应。检查应用是否在开发者控制台中启用了 MAP API,签名指纹匹配,以及应用是否在应用目录中下载了正确的 agconnect-services.json。您可以按照华为地图套件教程codelabs。确保不要遗漏任何步骤,并将您的代码与示例代码进行比较,看看是否有任何区别。

于 2020-12-15T15:23:45.640 回答