Huawei Map Kit - onMapReady() 未在 getMapAsync() 之后调用
Huawei Map Kit - onMapReady() not called after getMapAsync()
我正在尝试创建一个使用 google 地图的项目的定位器功能的华为变体。但我的问题是 onMapReady() 回调在 getMapAsync()
之后根本不会触发
这就是我调用 getMapAsync 的方式:
val mapFragment = childFragmentManager.findFragmentById(R.id.fragment_huawei_map_container) as SupportMapFragment
mapFragment.getMapAsync(this@SampleMapsFragment)
当调用 onMapReady() 时使用 google 地图依赖项时这工作正常。
但是使用华为地图依赖时,在getMapAsync()后onMapReady回调根本不会触发
onMapReady 方法需要重新加载。下面介绍如何使用SupportMapFragment. For more details, see docs.
创建地图实例
- 在布局文件中添加一个Fragment对象(例如activity_main.xml),并在文件
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/mapfragment_mapfragmentdemo"
class="com.huawei.hms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraTargetLat="48.893478"
map:cameraTargetLng="2.334595"
map:cameraZoom="10" />
- 要在您的应用中使用地图,请在 MainActivity.java 文件中实施 OnMapReadyCallback API。
示例代码如下:
public class SupportMapDemoActivity extends AppCompatActivity implements OnMapReadyCallback {
...
}
- 在MainActivity.java文件中,加载SupportMapFragment in the onCreate() method and call getMapAsync()注册回调。
示例代码如下:
private SupportMapFragment mSupportMapFragment;
mSupportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapfragment_mapfragmentdemo);
mSupportMapFragment.getMapAsync(this);
- 调用onMapReady callback to obtain the HuaweiMap对象。
示例代码如下:
public void onMapReady(HuaweiMap huaweiMap) {
Log.d(TAG, "onMapReady: ");
hMap = huaweiMap;
}
- 运行您的项目,然后安装您的应用程序以在您的应用程序中查看地图。
由于您使用的是华为的地图工具包,请检查以下内容:
您已经生成了一个 sha256 密钥并集成了 HMS 核心,您可以使用此 link 了解具体方法。
如果您已完成上述所有操作,请确保 agconnect-services.json 位于正确的位置。然后,检查您的清单中是否有:
最后要检查的是,如果您已经完成
我希望其中一项能有所帮助,因为我能够让 onMapReady 触发:
我正在尝试创建一个使用 google 地图的项目的定位器功能的华为变体。但我的问题是 onMapReady() 回调在 getMapAsync()
之后根本不会触发这就是我调用 getMapAsync 的方式:
val mapFragment = childFragmentManager.findFragmentById(R.id.fragment_huawei_map_container) as SupportMapFragment
mapFragment.getMapAsync(this@SampleMapsFragment)
当调用 onMapReady() 时使用 google 地图依赖项时这工作正常。
但是使用华为地图依赖时,在getMapAsync()后onMapReady回调根本不会触发
onMapReady 方法需要重新加载。下面介绍如何使用SupportMapFragment. For more details, see docs.
创建地图实例- 在布局文件中添加一个Fragment对象(例如activity_main.xml),并在文件
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/mapfragment_mapfragmentdemo"
class="com.huawei.hms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraTargetLat="48.893478"
map:cameraTargetLng="2.334595"
map:cameraZoom="10" />
- 要在您的应用中使用地图,请在 MainActivity.java 文件中实施 OnMapReadyCallback API。 示例代码如下:
public class SupportMapDemoActivity extends AppCompatActivity implements OnMapReadyCallback {
...
}
- 在MainActivity.java文件中,加载SupportMapFragment in the onCreate() method and call getMapAsync()注册回调。 示例代码如下:
private SupportMapFragment mSupportMapFragment;
mSupportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapfragment_mapfragmentdemo);
mSupportMapFragment.getMapAsync(this);
- 调用onMapReady callback to obtain the HuaweiMap对象。 示例代码如下:
public void onMapReady(HuaweiMap huaweiMap) {
Log.d(TAG, "onMapReady: ");
hMap = huaweiMap;
}
- 运行您的项目,然后安装您的应用程序以在您的应用程序中查看地图。
由于您使用的是华为的地图工具包,请检查以下内容: 您已经生成了一个 sha256 密钥并集成了 HMS 核心,您可以使用此 link 了解具体方法。
如果您已完成上述所有操作,请确保 agconnect-services.json 位于正确的位置。然后,检查您的清单中是否有:
最后要检查的是,如果您已经完成
我希望其中一项能有所帮助,因为我能够让 onMapReady 触发: