GMSGeocoder逆地理编码不再返回完整地址问题求助
GMSGeocoder逆地理编码仅返回城市/国家信息的问题排查
我之前也碰到过一模一样的情况,最近身边好几个做iOS地图开发的朋友也反馈了类似问题,总结下来主要有这几个可能的原因:
- API权限或套餐变更:GMSGeocoder底层依赖的Google Maps Geocoding API,最近可能调整了免费与付费层级的权限。如果你用的是免费额度,现在大概率被限制了详细地址的返回权限,只有升级到付费套餐才能获取街道、门牌号这类精细信息。
- 坐标精度不足:如果传入的坐标精度不够(比如定位只到城市级,或者坐标小数位数太少),GMSGeocoder没办法匹配到具体的街道门牌号。可以检查下定位是否开启了高精度模式,或者传入的经纬度是否有足够的精度(比如至少保留6位小数)。
- 区域数据或政策限制:部分地区的地理数据覆盖可能有调整,或者当地隐私政策限制了详细地址的返回。比如某些区域出于隐私保护,Google无法提供过于具体的门牌号信息。
- 请求参数设置错误:有没有在代码里给GMSGeocoder设置了错误的过滤参数?比如如果限制了结果类型为
locality,那自然只会返回城市级别的数据。举个错误示例:// 错误示例:限制结果类型为城市级 let filter = GMSGeocoderFilter() filter.types = ["locality"] let geocoder = GMSGeocoder() geocoder.reverseGeocodeCoordinate(targetCoordinate, filter: filter) { response, error in // 处理结果 }
给你几个排查建议:先去Google Cloud控制台查看自己的API配额和权限状态,确认是否有超限或者权限变更;再检查传入的坐标精度和请求参数,排除代码层面的问题;如果还是解决不了,可以提交工单给Google Maps Support确认服务是否有区域或策略上的调整。
内容的提问来源于stack exchange,提问作者Filipe Santos
相关产品推荐
相关产品推荐

