gpt4 book ai didi

ios - 这里 iOS SDK : Places API make*Request always returns nil

转载 作者:行者123 更新时间:2023-11-28 20:52:28 26 4
gpt4 key购买 nike

我是 Here iOS SDK 的新手,我正在尝试通过搜索某个位置周围的地点来使用地点 API。我做了一个 pod try HEREMapsStarter 并尝试了以下代码:

let places = NMAPlaces()
let location = NMAGeoCoordinates(latitude: yyy, longitude: xxx)

let result2 = places.makeSearchRequest(location: location, query: "restaurant")
let result = places.makeHereRequest(location: location, filters: nil)
result?.start(listener: self)
result2?.start(listener: self)

但这行不通,因为 result 和 result2 都是 nil。我在这里缺少什么?

最佳答案

看来您正在尝试创建 places 对象:

let places = NMAPlaces()

但是 places 对象是单例的,只能通过调用 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 或其他错误。

关于ios - 这里 iOS SDK : Places API make*Request always returns nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56767998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com