即使我执行了所有实现,也没有加载地图的原因可能是什么?
5 回答
确保所有这些
在应用级 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() 注册回调。
希望这会奏效。
原因不止一个。我将提到导致此问题的一些原因:
确保在华为开发者的应用中启用了 MAP 套件。
确保在 Build.Gradle 应用程序中添加 Map Kit 的依赖项。
确保您在开发者中输入的 SHA-256 证书指纹在应用程序中是相同的。
确保您在 build.gradle 应用程序中输入了签名配置。
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 页面上设置密钥库签名。
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?
地图未加载的最常见原因是客户端未向地图服务器发送正确的凭据,并且地图服务器未返回包含地图数据的响应。检查应用是否在开发者控制台中启用了 MAP API,签名指纹匹配,以及应用是否在应用目录中下载了正确的 agconnect-services.json。您可以按照华为地图套件教程codelabs。确保不要遗漏任何步骤,并将您的代码与示例代码进行比较,看看是否有任何区别。