mapkit-ios-demo
mapkit-ios-demo copied to clipboard
YMKSearchSuggestSession не вызывает suggestHandler при запросе
IOS Swift. Реализовал все тоже самое что и в примере с гх у себе в проекте, но suggestHandler не вызывается. Причем с моим ключем в тестовом примере все работает, но в моем проекте не работает. Даже сам класс SuggestViewController перетащил чтобы убедится. Может нужно какую-то настройку включить в проекте?
import YandexMapsMobile
class SuggestViewController: UIViewController, UITableViewDataSource { @IBOutlet weak var tableView: UITableView! @IBOutlet weak var searchBar: UITextField!
var suggestResults: [YMKSuggestItem] = []
let searchManager = YMKSearch.sharedInstance().createSearchManager(with: .combined)
var suggestSession: YMKSearchSuggestSession!
let BOUNDING_BOX = YMKBoundingBox(
southWest: YMKPoint(latitude: 55.55, longitude: 37.42),
northEast: YMKPoint(latitude: 55.95, longitude: 37.82))
let SUGGEST_OPTIONS = YMKSuggestOptions()
override func viewDidLoad() {
super.viewDidLoad()
suggestSession = searchManager.createSuggestSession()
tableView.dataSource = self
}
func onSuggestResponse(_ items: [YMKSuggestItem]) {
suggestResults = items
tableView.reloadData()
}
func onSuggestError(_ error: Error) {
let suggestError = (error as NSError).userInfo[YRTUnderlyingErrorKey] as! YRTError
var errorMessage = "Unknown error"
if suggestError.isKind(of: YRTNetworkError.self) {
errorMessage = "Network error"
} else if suggestError.isKind(of: YRTRemoteError.self) {
errorMessage = "Remote server error"
}
let alert = UIAlertController(title: "Error", message: errorMessage, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
present(alert, animated: true, completion: nil)
}
@IBAction func queryChanged(_ sender: UITextField) {
let suggestHandler = {(response: [YMKSuggestItem]?, error: Error?) -> Void in
if let items = response {
self.onSuggestResponse(items)
} else {
self.onSuggestError(error!)
}
}
suggestSession.suggest(
withText: sender.text!,
window: BOUNDING_BOX,
suggestOptions: SUGGEST_OPTIONS,
responseHandler: suggestHandler)
}
func tableView(_ tableView: UITableView, cellForRowAt path: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "suggestCell", for: path) as! SuggestCell
cell.itemName.text = suggestResults[path.row].displayText
return cell
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return suggestResults.count
}
}
В 4.1.0 тоже перестало работать. Вернее теперь вызывается если свернуть и развернуть приложение.
У меня на 4.1.0 тоже очень схожая проблема, только с YMKSearchManager https://github.com/yandex/mapkit-ios-demo/issues/144
Скорее всего мапкит создается не в application:didFinishLaunchingWithOptions, тогда нужно эксплицитно позвать onStart у объекта мапкита после создания. Например: YMKMapKit.setApiKey(...) YMKMapKit.sharedInstance().onStart()
Скорее всего мапкит создается не в application:didFinishLaunchingWithOptions, тогда нужно эксплицитно позвать onStart у объекта мапкита после создания. Например: YMKMapKit.setApiKey(...) YMKMapKit.sharedInstance().onStart()
Благодарю!