Android端Google Map不显示、关闭GPS无法获取LatLong问题求助
Google Map问题修复方案
问题1:地图图层消失无法加载
- 先确认Google Cloud Console中Maps SDK for Android服务处于启用状态,若免费额度耗尽或误关停服务会仅渲染UI控件不加载地图瓦片
- 检查应用网络权限配置,targetSdk≥33需确保已申明
ACCESS_NETWORK_STATE、INTERNET权限,同时排查网络环境是否能正常访问Google服务 - 检查混淆配置,在
proguard-rules.pro中添加Google Map官方混淆豁免规则,避免Map核心类被混淆导致渲染失败 - 清除应用本地缓存重试,本地缓存的瓦片数据损坏也会导致图层加载异常
问题2:需提前开启GPS才能使用功能
你的turnGPSOn/turnGPSOff方法仅适配安卓4.4及以下系统,安卓6.0之后系统禁止第三方应用通过广播直接开关GPS,该逻辑完全无效,是导致问题的核心原因,修复方案如下:
- 移除
turnGPSOn、turnGPSOff方法,删除onDestroy中关GPS的调用 - 使用官方
SettingsClientAPI弹出系统级GPS开启引导,用户无需跳转设置页即可在当前页授权开启GPS,示例代码:
// 替换原有turnGPSOn调用逻辑,放在onCreate中执行 LocationRequest locationRequest = LocationRequest.create(); locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); LocationSettingsRequest settingsRequest = new LocationSettingsRequest.Builder() .addLocationRequest(locationRequest) .build(); LocationServices.getSettingsClient(this) .checkLocationSettings(settingsRequest) .addOnSuccessListener(response -> fetchLocation()) .addOnFailureListener(e -> { if (e instanceof ResolvableApiException) { try { ((ResolvableApiException) e).startResolutionForResult(MapActivity.this, REQUEST_CODE); } catch (IntentSender.SendIntentException ignored) {} } });
- 将
getMapAsync调用从fetchLocation的成功回调中移到onCreate里,不管有没有拿到位置都先初始化地图,避免拿不到位置时地图完全不加载 - 优化刷新按钮逻辑,不需要重启Activity,点击后直接重新请求位置更新即可,体验更流畅
- 移除自定义的
getLastKnownLocation逻辑,FusedLocationProviderClient已经实现了最优的多源位置获取、缓存逻辑,不需要重复实现
内容的提问来源于stack exchange,提问作者Dioo B
相关产品推荐
相关产品推荐

