HMS core Map kit,地图加载但不渲染

HMS core Map kit, map loads but no rendering

我正在测试华为的地图套件。

应用程序已在 App Gallery Connect 中创建,我已完成所有步骤。 其他 HMS 服务工作正常。 我所有的依赖都是正确的。

所以,我用视图来表示地图。

调用 onMapReady,查看负载,我可以与地图交互、添加图钉、查找我的位置等。 但是我看不到地图,只有空白的图块。

我没有收到错误,onMapReady 被调用就好了。

我也试过华为Github的demo,结果一样。 我也试过片段,同样的结果。

我的mapView

  <com.huawei.hms.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:id="@+id/mapView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:cameraTargetLat="48.893478"
    map:cameraTargetLng="2.334595"
    map:cameraZoom="8.5"/>

我的onCreate

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_huawei_map_test);
    Log.d(TAG, "yo: ");
    if (!hasPermissions(this, RUNTIME_PERMISSIONS)) {
        ActivityCompat.requestPermissions(this, RUNTIME_PERMISSIONS, 100);
    }
    mMapView = findViewById(R.id.mapView);
    Bundle mapViewBundle = null;
    if (savedInstanceState != null) {
        mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
    }
    MapsInitializer.setApiKey("");//my key
    mMapView.getMapAsync(this);
    mMapView.onCreate(mapViewBundle);

我的onMapReady

 @Override
public void onMapReady(HuaweiMap map) {
    //get map instance in a callback method
    Log.d(TAG, "onMapReady: ");
    hMap = map;
    //hMap.setMapType(HuaweiMap.MAP_TYPE_TERRAIN);
    hMap.setMyLocationEnabled(true);
    hMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(48.893478, 2.334595), 10));
    Marker mMarker = hMap.addMarker(new MarkerOptions().position(new LatLng(48.893478, 2.334595)));
    mMarker.showInfoWindow();

}

结果:

感谢您提出非常详细的问题。起初看起来 this 已经讨论过问题,但您没有收到任何错误。

一个常见的未检测到的错误是您没有正确签署您的应用程序。尝试克隆官方 codelab repository 并从那里编译代码。您需要使用自己的密钥对您的应用进行签名,并在AGC控制台上提供相应的SHA指纹。

查看有关如何创建签名证书的 this 代码实验室以供参考。

我尝试了上面链接的存储库,更改了程序包名称,交换了 App ID,填写了 API 密钥并添加了 agconnect json 文件。

在 AGC 控制台上,我输入了正确的 SHA 指纹,但使用错误的密钥签署了我的应用程序。重建后我想知道为什么你的错误仍然发生。一定是因为应用程序无法使用不同的签名更新,这是有道理的。

尝试卸载应用程序并重新安装新签名的应用程序。很难说这是否也能为您解决问题,但如果不能,最好有一个完整的堆栈跟踪来解决问题。

尝试在 String API_KEY 中编辑 API_KEY~/utils/MapUtils.java 中(如果您尝试了 Huawei Codelabs[=29 中的示例代码=] (Github))

尝试在入口 class 中直接添加 API_KEY in MapsInitializer.setApiKey("Your_API_KEY_Here")(例如 MyActivityMainActivity)。

如果上述方法没有帮助,请检查 API_KEY 必须更新/使用的地方。就我而言,这导致了问题。