MapView在Android API 19中加载,在新版本中为灰色

时间:2019-05-17 18:32:31

标签: android google-maps

我有一个Android应用,几天前突然停止在生产中显示地图图块。而是,地图显示带有Google徽标的灰屏,好像键是无效的。我们最近尚未部署应用程序或更改密钥。

我创建了一个新密钥,并在Android Studio中重建了该应用程序。进行一些调整后,地图可以正确加载到Android 19的MapView中。

但是,在模拟器和真实设备中,地图在更高版本(例如26、27)中仍为灰色。

如果我改用Maps docs中的示例MapFragment替换应用程序的MainActivity,则地图会加载并在所有平台上都是交互式的。如果然后我切换回MapView并重建应用程序,则地图将显示MapFragment加载的所有图块-但是在平移和缩放时不会加载任何其他内容。没有明显的logcat错误。

我已经升级到最新的播放服务('com.google.android.gms:play-services-base:16.1.0''com.google.android.gms:play-services-location:16.0.0'),更新了gradle,无效的缓存以及重新启动,擦除和重新安装的模拟器设备-行为一致。

left screenshot shows Android API 27 without a map; right shows Android API 19 with map loading correctly

2 个答案:

答案 0 :(得分:1)

似乎问题在于生命周期事件处理。来自'MapVew' description

  

此类的用户必须转发来自的所有生命周期方法   ActivityFragment包含此视图中的相应视图   这个班。特别是,您必须转发以下方法:

onCreate(Bundle)
onStart()
onResume()
onPause()
onStop()
onDestroy()
onSaveInstanceState()
onLowMemory()
     

必须使用getMapAsync(OnMapReadyCallback)获取GoogleMap。   MapView自动初始化地图系统和视图。

您必须在mMapView.onCreate(bundle)布局的mMapView.onStart()Activity的每个相应方法中调用FragmentMapView等。

答案 1 :(得分:0)

在此特定情况下,问题似乎是由Google Maps服务与({ __typename: "Project" } & { project: number; }) 库的交互引起的。将两者都更新到最新版本即可解决此问题。