集成 Google Maps SDK 後,地圖區域一片空白,僅顯示 Google Logo,「+ / -」縮放控件正常,但無地圖瓦片加載。
中國大陸網絡環境屏蔽了 Google Maps 相關域名(maps.googleapis.com, mt*.google.com 等),導致瓦片請求超時/被重置,SDK 回退到空白底圖。
| 方案 | 適用場景 | 優點 | 缺點 |
|---|---|---|---|
| 全局 VPN / 代理 | 開發調試階段 | 最直接,無需改代碼 | 需合規網絡環境,發布不可行 |
| 替換為高德/百度/騰訊地圖 SDK | 正式發布、國內商業項目 | 國內訪問穩定、功能豐富、合規 | API 不兼容,需重寫地圖邏輯 |
| 使用 Google Maps 中国版(需企業資質) | 跨國企業、特殊合作項目 | 官方合法渠道 | 申請門檻高、費用昂貴 |
| 離線瓦片包(MBTiles)+ OsmAnd/Mapbox | 全離線、特定區域應用 | 無網絡依賴 | 數據更新麻煩、存儲佔用大 |
AndroidManifest.xml 中 API Key 正確(com.google.android.geo.API_KEY)。// 1. 檢查 Google Play Services 版本
GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)
// 2. 監聽地圖加載錯誤
mMap.setOnMapLoadedCallback(() -> Log.d("Map", "Loaded"));
mMap.setOnCameraIdleListener(() -> {
// 可在這裡檢查瓦片請求狀態(需反射或查看日誌)
});
// 3. 日誌關鍵字過濾
// logcat | grep -i "maps\|tile\|ssl\|network"
// build.gradle
implementation 'com.amap.api:maps:latest.version'
// 初始化
MapsInitializer.initialize(getApplicationContext());
// 後續 API 與 Google Maps 高度相似:AMap, MarkerOptions, CameraUpdateFactory 等
「Google 地圖在天朝是被牆的。看看是不是忘記開 VPN 了。」—— 最佳回答一針見血。