You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用MKLocalSearch.start触发MKErrorDomain错误,求排查原因

问题原因及解决方案

错误解析

你遇到的MKErrorDomain Code=2搭配MKErrorGEOError=-7,核心原因是搜索区域设置得过小。其中GEOError=-7对应GEODatabaseErrorRegionTooSmall,意思是你定义的搜索跨度极小,地图服务无法在如此狭窄的范围内找到匹配的POI(比如你搜索的"bar"),直接返回无结果错误。

看你的代码,MKCoordinateSpan的经纬度增量都是0.000018011,这个数值对应的实际地理范围仅约2米(纬度上1度≈111公里,0.000018度换算后约2米),这么小的区域内几乎不可能存在符合条件的商家。

修复方案

1. 调大搜索跨度

把经纬度增量改成合理的数值,根据需求调整范围,比如设置为0.01(对应约1.1公里的搜索范围):

let searchSpan = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)

你可以根据实际场景调整这个值,比如需要找步行范围内的商家,用0.005(约500米)即可。

2. 灵活设置搜索规则(可选)

如果必须缩小范围,建议先放宽搜索区域获取结果,再通过MKMapItem的placemark.location计算距离,筛选出近距离的POI,而不是一开始就把区域限死到极小。

另外,如果你是要找当前位置附近的商家,也可以省略region设置,直接用自然语言查询:

searchRequest.naturalLanguageQuery = "bar near me"

系统会自动基于当前位置调整搜索范围,避免区域过小的问题。

内容的提问来源于stack exchange,提问作者BiggRojo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:45:15