Dan*_*son 13 mapkit ios mklocalsearch
我正在一个搜索地址的应用程序中实现自动完成(每个新角色添加一个搜索),我不断获取MKErrorDomain error 3,这是MKErrorLoadingThrottled.根据Apple dev的说法,这个错误发生在
未加载数据,因为数据限制有效.如果应用程序在短时间内频繁请求数据,则会发生此错误.
我确切地知道有多少请求正在进行,一个用于搜索查询中的每个新charachter(就像您希望自动完成工作一样).当然,我是一个快速的人,但只有10或15个请求后能够达到极限似乎是荒谬的.看看以下两个源代码引用,我不明白为什么我一直受到限制.
根据Apple开发:
每个应用程序或开发人员ID没有请求限制,因此编写良好的正确应用程序应该不会遇到任何问题.但是,在创建大量请求的应用程序写得不好的情况下,可能会出现限制.
正如詹姆斯霍华德在WWDC上所说:
我想谈的另一件事就是这个API的使用限制.因此,我很高兴地宣布,没有应用程序或开发人员标识符的广泛使用限制.所以,如果你的应用程序拥有大量用户并且你想要做很多请求,那就没问题了.
它会工作的.
我们所拥有的限制实际上只是防范错误应用程序的第一道防线.因此,如果您将路线请求或本地搜索请求置于无限循环中,您就会遇到错误,最终您将受到限制.
但是,如果你做了一些合理的事情,你会说哦,我只会做一些回应用户输入的指示,你知道你可以做一些,因为我们向他们展示了这个例子.
就像我们针对一个用户输入做了两个方向请求一样,这很好.但是,你知道如果你每次用户点击屏幕时你都做了10,000,那么你就会受到限制.但是,只要保持合理,你就没事了.
任何想法为什么会发生这种情况?
小智 11
自动完成需要特殊的API.MapKit不提供这样的界面.只是向普通搜索API发出数十个请求会导致巨大的负担.
你基本上有两个选择:
使用Google商家信息.他们有专门的Places Autocompletion API.在GitHub上甚至还有一个完整的iOS库.
减少请求的数量,例如,如果用户暂停键入300ms并且仅在没有先前请求未完成的情况下仅发送请求.但是,这仍然无法保证Apple不会限制您的请求.
| 归档时间: |
|
| 查看次数: |
3655 次 |
| 最近记录: |