Android 平台 Google Maps 地图 Fragment 中 Sydney 标记无法显示问题求助
可能遗漏的配置&问题排查点
- 权限配置缺失
Google Maps运行需要网络、定位相关权限,必须在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_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> - Google Play服务版本声明缺失
需要在AndroidManifest.xml的<application>标签内部添加Play服务版本声明,否则地图初始化会失败:<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> - 密钥配置错误
确认Google Maps密钥正确配置在AndroidManifest.xml的<application>标签内部,格式如下:
注意密钥必须和你在Google Cloud后台绑定的应用包名、签名指纹匹配,否则密钥不生效<meta-data android:name="com.google.android.geo.API_KEY" android:value="你的正式Google Maps密钥" /> - 相机缩放等级未设置
你当前的代码只将相机移动到悉尼坐标,但没有设置缩放等级,默认缩放等级极低,标记会缩在全球视图里无法看见,将移动相机的代码修改为带缩放参数的版本即可:// 缩放等级12f对应城市级视图,可以清晰看到标记 googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 12f)) - 运行时权限未申请
如果你的应用targetSdkVersion≥23,即使在Manifest中声明了定位权限,也需要在加载地图前主动向用户申请运行时权限,权限未授予的情况下OnMapReadyCallback不会触发,自然无法加载标记。 - 设备环境问题
确认运行设备可以正常访问Google服务,且安装了符合版本要求的Google Play服务,服务异常时地图回调不会触发。
内容的提问来源于stack exchange,提问作者Antoine Brouillette
相关产品推荐
相关产品推荐

