gpt4 book ai didi

swift - 由于 "found nil"解开网址,无法从 GoogleMaps 获取路线

转载 作者:行者123 更新时间:2023-11-30 10:41:56 26 4
gpt4 key购买 nike

我搜索了这个主题,发现了一些我试图在我的项目中实现的代码,但它不起作用!

那么,我想要实现什么目标?我想在 UI 中添加一个按钮,当用户点击该按钮时,应用程序会显示前往 GoogleMap 上特定点的方向。但我的函数在 URL 上崩溃了。

这是我的代码:

func draw(src: CLLocationCoordinate2D, dst: CLLocationCoordinate2D){

let urlString = "https://maps.googleapis.com/maps/api/directions/json?origin=\(src)&destination=\(dst)&sensor=false&mode=driving&key=**API_KEY**" <- // Here I place API-Key

let url = URL(string: urlString) // Here is the crash!

URLSession.shared.dataTask(with: url!, completionHandler: {
(data, response, error) in
if(error != nil){
print("error")
}else{
do{
let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String : AnyObject]
let routes = json["routes"] as! NSArray
self.mapView.clear()

OperationQueue.main.addOperation({
for route in routes
{
let routeOverviewPolyline:NSDictionary = (route as! NSDictionary).value(forKey: "overview_polyline") as! NSDictionary
let points = routeOverviewPolyline.object(forKey: "points")
let path = GMSPath.init(fromEncodedPath: points! as! String)
let polyline = GMSPolyline.init(path: path)
polyline.strokeWidth = 3

let bounds = GMSCoordinateBounds(path: path!)
self.mapView!.animate(with: GMSCameraUpdate.fit(bounds, withPadding: 30.0))

polyline.map = self.mapView

}
})
}catch let error as NSError{
print("error:\(error)")
}
}
}).resume()
}

我不知道问题是否出在 API key 上,或者是否还有其他原因。我读到空格等可能会导致此问题,但我找不到问题所在!

错误消息:

Fatal error: Unexpectedly found nil while unwrapping an Optional value
2019-06-14 16:50:45 Fatal error: Unexpectedly found nil while unwrapping an Optional value

最佳答案

您错误地直接使用CLLocationCooperative2D创建了urlString,因为您必须使用它的属性latitude/longitude

let urlString = "https://maps.googleapis.com/maps/api/directions/json?origin=\(src)&destination=\(dst)&sensor=false&mode=driving&key=**API_KEY**" <- // Here I place API-Key

应该是

let urlString = "https://maps.googleapis.com/maps/api/directions/json?origin=\(src.latitude),\(src.longitude)&destination=\(dst.latitude),\(dst.longitude)&sensor=false&mode=driving&key=**API_KEY**" <- // Here I place API-Key

此外,最好避免 ! 并执行

guard let url = URL(string: urlString) else { return }

关于swift - 由于 "found nil"解开网址,无法从 GoogleMaps 获取路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56600690/

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