Похоже, что вы пытаетесь создать объект мест:
let places = NMAPlaces()
Но объект мест - это Singleton, и его можно получить только с помощью вызова shared ()
let places = NMAPlaces.shared()
Также каквы используете result?.start(listener: self)
метод, который вам нужен для реализации NMAResultListener слушателя.Пример простого слушателя:
class MainViewController: UIViewController, NMAResultListener {
func requestDidComplete(_ request: NMARequest, data: Any?, error inError: Error?) {
print("data = \(String(describing: data))")
guard inError == nil else {
print ("Request error \((inError! as NSError).code)")
return
}
guard data is NMADiscoveryPage, let resultPage = data as? NMADiscoveryPage else {
print ("invalid type returned \(String(describing: data))")
return
}
let resultsArray: [NMALink] = resultPage.discoveryResults;
for link in resultsArray
{
if let placeLink = link as? NMAPlaceLink {
print("PlaceLink position: \(placeLink.position.latitude), \(placeLink.position.longitude)")
}
}
}
....
}
===================================================================
Предположим, вы ищете в Великобритании, Лондоне (51.514545,-0.131666) и используйте NMAResultListener, как описано выше.В обоих запросах параметр слушателя self
реализует NMAResultListener, как описано выше.
Код для makeSearchRequest может быть следующим:
let geoCoordCenter = NMAGeoCoordinates(latitude:51.514545, longitude: -0.131666)
let searchRequest = NMAPlaces.shared().makeSearchRequest(location: geoCoordCenter, query: "restaurant")
searchRequest?.start(listener: self)
Когда запрос завершится, makeSearchRequest вернет результаты:
data = Optional(<NMADiscoveryPage: 0x28241a400>)
PlaceLink position: 51.5117, -0.12565
PlaceLink position: 51.51312, -0.13374
....
PlaceLink position: 51.51371, -0.13155
PlaceLink position: 51.51462, -0.12651
И код для makeHereRequest:
let geoCoordCenter = NMAGeoCoordinates(latitude:51.514545, longitude: -0.131666)
let hereRequest = NMAPlaces.shared().makeHereRequest(location: geoCoordCenter, filters: nil)
hereRequest?.start(listener: self)
makeHereRequest вернет результаты:
data = Optional(<NMADiscoveryPage: 0x282400f00>)
PlaceLink position: 51.514542, -0.131883
PlaceLink position: 51.514542, -0.131883
....
PlaceLink position: 51.51435, -0.13169
PlaceLink position: 51.51444, -0.13194
PlaceLink position: 51.51444, -0.13194
Также обратите внимание, что в зависимости от условий сети и местоположения поиска там также могутбыть результатом ошибки типа not found
или других ошибок.