xcode – MKDirections许多请求停止工作
我需要绘制一个以坐标列表(P1,P2,… Pn)开头的路径.对于我的列表中的每个下一对Pi,Pj,我调用MKDirections类的方法calculateDirectionsWithCompletionHandler,直到Pn-1元素.我第一次称之为一切看起来都很完美.
但是,如果我第二次或更远的时间,我会收到此错误: Error Domain=MKErrorDomain Code=3 "Directions Not Available" UserInfo={NSLocalizedFailureReason=Route information is not available at this moment.,MKErrorGEOError=-4,MKDirectionsErrorCode=2,NSLocalizedDescription=Directions Not Available} 并且没有任何作品了. 我认为这是因为我在很短的时间内调用了API太多次了.我在网上发现我应该使用属性direction.calculating并检查请求是否已在进行中.我无法理解如何使用它.有人可以帮帮我吗?谢谢. 解决方法
我经历了相同的单元测试.
我通常使用这种API的方法是使用速率限制器.它限制在给定时间范围内对API的调用次数. 有几个实现,我成功使用,像这样一个https://github.com/nuclearace/SwiftRateLimiter 它允许您选择呼叫次数和时间范围. (你甚至可以为一个API使用两个实例,所以说:每秒最多10个电话,每分钟最多100个电话) 我不太喜欢direction.isCalculating方法,因为它使一般情况下的线程难以同步. 但我更喜欢速率限制器. Apple正在限制“写得不好/行为不端的应用程序”,但我不知道Apple记录了它用来执行此操作的速率限制. 代码示例: let GlobalDirectionsRateLimiter = RateLimiter(tokensPerInterval: 3,interval: 1.0) GlobalDirectionsRateLimiter.removeTokens(1) {_,_ in directions.calculate { (response: MKDirections.Response?,error: Swift.Error?) in ... } } 不要相信我的速率限制器参数.我的应用程序中的所有计算都来自用户操作,因此我不需要更多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |