Jetpack Compose中GoogleMap无法正常显示问题求助
地图无法显示的原因排查及解决办法
你使用Maps Compose Library集成Google Maps API时,程序运行但地图无法正常显示,常见原因及对应解决方式如下:
1. API密钥配置错误
这是最普遍的问题,需确认:
- 已在Google Cloud控制台启用Maps SDK for Android服务;
- 正确将API密钥添加到
AndroidManifest.xml:<application> <meta-data android:name="com.google.android.geo.API_KEY" android:value="你的有效API密钥"/> </application> - 密钥的限制规则(包名、SHA-1指纹)与当前应用匹配,避免因权限拦截导致API调用失败。
2. 未设置初始相机位置
你的代码中没有指定地图的初始相机位置,地图无法确定加载区域。需为GoogleMap添加cameraPositionState参数:
@Composable fun MyMap() { var uiSettings by remember { mutableStateOf(MapUiSettings()) } var properties by remember { mutableStateOf(MapProperties(mapType = MapType.SATELLITE)) } // 初始相机位置,示例为北京坐标,缩放级别10 val cameraPositionState = rememberCameraPositionState { position = CameraPosition.fromLatLngZoom(LatLng(39.9042, 116.4074), 10f) } Box(Modifier.fillMaxSize()) { GoogleMap( modifier = Modifier.matchParentSize(), properties = properties, uiSettings = uiSettings, cameraPositionState = cameraPositionState // 添加这一行 ) Switch( checked = uiSettings.zoomControlsEnabled, onCheckedChange = { uiSettings = uiSettings.copy(zoomControlsEnabled = it) } ) } }
3. 依赖版本不兼容
Maps Compose与Google Maps SDK版本需匹配,建议使用官方推荐的组合,比如在Module级build.gradle中配置:
dependencies { implementation "com.google.maps.android:maps-compose:4.3.0" implementation "com.google.android.gms:play-services-maps:18.2.0" }
4. 权限缺失
地图加载需要网络权限,若涉及定位还需定位权限,在AndroidManifest.xml中添加:
<!-- 网络权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 定位权限(按需添加) --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Android 6.0+版本需在运行时请求定位权限,否则可能影响地图加载。
5. 网络连接问题
地图瓦片依赖网络加载,确保设备处于联网状态,且未被防火墙、代理拦截Google地图服务。
最后,建议查看Logcat中的错误日志,通常会有明确的错误提示(如API密钥无效、权限不足等),能快速定位问题根源。
内容的提问来源于stack exchange,提问作者sam_1234
相关产品推荐
相关产品推荐

