У меня есть приложение с двумя действиями, показывающими Карты Google. Карта совместно используется двумя действиями через включенный фрагмент. Проблема заключается в частичной загрузке Карт Google.
Я уже проверил ключ API, ограничил ключ API приложением SHA-1 (а также попробовал неограниченный ключ). Я использую Kotlin вместе с Android Studio 3.4.1 и AndroidX.
Макет Google Maps
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
Карта, включенная в активность, показана на скриншотах:
<include
layout="@layout/fragment_map"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/include"
tools:context=".ui.features.domain.DomainMapActivity" />
Код активности:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setTheme(R.style.AppTheme)
setContentView(R.layout.activity_domain_map)
bindViews()
init()
initMap()
}
private fun init() {
val bundle: Bundle? = intent.extras
bundle?.let { it ->
domainLocation = it.getParcelable("domain_location")
wineID = it.getString("wine_id")
domainName = it.getString("domain_name")
domainName?.let {
mToolbarLogo = mToolbar.findViewById(R.id.toolbar_logo)
mToolbarTitle = mToolbar.findViewById(R.id.toolbar_title)
mToolbarLogo.visibility = View.GONE
mToolbarTitle.visibility = View.VISIBLE
mToolbarTitle.text = it
}
}
}
private fun initMap() {
try {
val options = GoogleMapOptions()
options.mapType(GoogleMap.MAP_TYPE_TERRAIN)
.compassEnabled(false)
.rotateGesturesEnabled(true)
.scrollGesturesEnabled(true)
.tiltGesturesEnabled(true)
mapFragment = SupportMapFragment.newInstance(options)
val ft = supportFragmentManager.beginTransaction()
ft.replace(R.id.map, mapFragment)
ft.commit()
mapFragment.getMapAsync(this@DomainMapActivity)
} catch (e: NullPointerException) {
Log.e(TAG, e.localizedMessage)
}
}
override fun onMapReady(googleMap: GoogleMap?) {
mMap = googleMap
mMap?.setOnMapClickListener(this)
mMap?.setOnMarkerClickListener(this)
mMap?.setOnCameraMoveListener(this)
if (checkPermission()) {
mMap?.isMyLocationEnabled = true
mMap?.uiSettings?.isMyLocationButtonEnabled = true
} else askPermission()
//Ensure the location to pass is not null
domainLocation?.let {
setCurrentLocation(it)
}
}
Фактический результат:
1 https://imgur.com/QhCXCEw (вход в активность, увеличение 15)
2 https://imgur.com/urhQiFh (Уменьшить, нет подробностей)
3 https://imgur.com/gXoQzcm (Уменьшить, мое текущее местоположение)
Ожидаемый результат при вводе действия: 4 : https://imgur.com/lA9UAa4 "Местоположение пользователя (мое текущее местоположение) и что я при входе в действие (правильное отображение)"