Google 地图在 android 设备上显示为灰色

Google Maps show gray on android device

我在我的应用程序中实现了 Google 地图(在片段中),当我打开该片段时,它只显示灰色屏幕,而我正在获取正确的纬度、经度

代码

override fun onCreateView(
  inflater: LayoutInflater, container: ViewGroup?,
  savedInstanceState: Bundle?
): View? {
  // Inflate the layout for this fragment
  val root = inflater.inflate(R.layout.fragment_map_to_customer, container, false)
  customerAddressArgument = requireArguments().getString("customerAddressArgument").toString()
  // Google Maps
  var mapView = root.findViewById(R.id.map) as MapView
  mapView.getMapAsync(this)
  mapView.onCreate(arguments)
  return root
}

override fun onMapReady(googleMap: GoogleMap) {
  mMap = googleMap
  // mMap.uiSettings.isZoomControlsEnabled = true

  val geoCoder = Geocoder(context)
  var address = geoCoder.getFromLocationName(customerAddressArgument, 1)!![0]
  val latLng = LatLng(address.latitude, address.longitude)
  mMap!!.addMarker(MarkerOptions().position(latLng).title("Location"))
  mMap!!.animateCamera(CameraUpdateFactory.newLatLng(latLng))
  Log.d("latLng20:", latLng.toString()) <-- return: **D/latLng20:: lat/lng: (-6.3946055,106.7947916)**
  Toast.makeText(
    context,
    address.latitude.toString() + " " + address.longitude,
    Toast.LENGTH_LONG
  ).show()
}

latLng 在 google maps website

有什么想法吗?

问题

在调试过程中,我发现我的地图需要点击屏幕才能加载它的每个单独部分,它不会自行加载元素。

解决方案

为了解决我发现的问题并回答 建议使用 onResume() 函数来加载地图,这是如何完成的。

var mapView: MapView? = null //<-- add this

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val root = inflater.inflate(R.layout.fragment_map_to_customer, container, false)
        customerAddressArgument = requireArguments().getString("customerAddressArgument").toString()

        // Google Maps
        mapView = root.findViewById(R.id.map) as MapView //<- define it here
        mapView!!.getMapAsync(this)
        mapView!!.onCreate(arguments)
        return root
}

override fun onResume() {
  mapView?.onResume() //<- get it in onResume()
  super.onResume()
}

问题解决了。