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()
}
问题解决了。
我在我的应用程序中实现了 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()
}
问题解决了。