Ionic应用Google Static Map URL iOS正常安卓端加载空白问题咨询
安卓端加载失败的可能原因如下:
- URL未做标准编码:你提供的示例URL中center参数包含未编码的空格(
22, market street中的空格),桌面浏览器、iOS的WebView会自动对这类特殊字符做转义处理,但安卓原生WebView不会,会直接发起包含非法字符的请求导致失败,需要把URL中的空格替换为%20或者+,所有非ASCII的特殊字符都要做URI编码。 - 内容安全策略(CSP)未放行谷歌域名:Ionic安卓打包默认的CSP规则比较严格,需要检查两个配置:一是
config.xml中是否添加了<allow-navigation href="https://maps.googleapis.com/*" />规则,二是index.html头部的CSP meta标签中是否把https://maps.googleapis.com加入了img-src的允许列表。 - img-loader组件兼容性问题:部分版本的img-loader插件在安卓低版本系统/Chromium内核WebView下,处理跨域图片资源时存在已知的加载异常问题,可以先替换为原生
<img>标签测试加载效果,如果原生标签可以正常显示,升级img-loader到最新稳定版即可解决。 - API密钥的安卓限制配置错误:如果你在谷歌云控制台给当前API密钥配置了安卓应用的包名、签名校验限制,但是填写的包名或者签名SHA1值和实际打包的应用不一致,谷歌服务会直接拒绝安卓端的请求,可暂时去掉密钥的应用限制做验证,如果去掉后恢复正常,重新核对包名和签名配置即可。
- 样式类名不匹配导致容器高度异常:你的SCSS中定义的容器类是
.mapcontainer,但HTML里用的是map-container,二者类名不匹配可能导致容器高度未正确赋值,部分安卓WebView对样式容错率更低,会直接出现高度为0的空白区域,先统一类名即可排查该问题。 - 安卓网络安全配置拦截:Android 9及以上系统默认的网络安全规则虽然不会拦截HTTPS请求,如果你自定义了
network_security_config.xml规则,误拦截了谷歌地图域名的请求也会导致加载失败,检查对应配置文件是否放行maps.googleapis.com域名。
内容的提问来源于stack exchange,提问作者AnKr
相关产品推荐
相关产品推荐

