Я использую Huawei MapKit и хочу добавить свой пользовательский MyLocationButton
, но я не хочу использовать диспетчер местоположений, чтобы получить свое местоположение и перейти к нему, я просто хочу huaweiMapMyLocationButton.performClick()
, например, с картами Google я могу сделать это
val locationButtonParent = view?.findViewById<View>(Integer.parseInt("1"))?.parent as? View?
val locationButton = locationButtonParent?.findViewById<View>(Integer.parseInt("2"))
locationButton.performClick()
Я хочу что-то подобное для карт huawei, я смог просмотреть дочерние элементы представления карты, и я нашел представления настроек пользовательского интерфейса (масштаб, компас, местоположение) и, следуя местоположению, я смог получить это:
val mapFragment = childFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
val fragmentView = mapFragment.view
val myLocationButton =
((((fragmentView as ViewGroup).getChildAt(0) as ViewGroup).getChildAt(1) as ViewGroup).getChildAt(
1
) as ViewGroup).getChildAt(0)
Но это не сработало
Слой MapView, который вы использовали в HUAWEI Map Kit, неверен. Нет необходимости анализировать карту на основе слоя Google.
Пожалуйста, попробуйте использовать следующий код, чтобы протестировать implementation' com.huawei.hms:maps:5.0.5.301 '
и добавить настроенный MyLocationButton
.
//...
MapView mapView = mMapView;
dumpMapViewClickLoctionBtn(mapView, "location");
}
}
private void dumpMapViewClickLoctionBtn(ViewGroup viewGroup, String id) {
for (int j = 0; j < viewGroup.getChildCount(); j++) {
View view = viewGroup.getChildAt(j);
if (view.toString().contains(id)) {
view.performClick();
}
if (view instanceof ViewGroup) {
ViewGroup v = (ViewGroup) view;
dumpMapViewClickLoctionBtn(v,id);
}
}
}
В классе HuaweiMap.class есть функция с именем moveCamera(CameraUpdate var1). так что есть другой способ:
public void onMapReady(HuaweiMap map) {
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(48.893, 2.334),10));
}
(48.893, 2.334) замените на расположение устройства.
Спасибо, это очень помогло, но. Я не использую
MabView
, поэтому вместо этого я использовал обычное свойствоview
во фрагменте, так что это похоже наview?.let{dumpMapViewClickLocationBtn(it,"location")}