【发布时间】:2017-05-15 19:34:25
【问题描述】:
我正在尝试显示带有两个标记的地图,这些标记具有从 API 检索到的经度和纬度。
获取经纬度的函数在Viewdidload中调用
override func viewDidLoad() {
super.viewDidLoad()
getCurrent()
还有在viewdidload 中显示带有标记的地图的代码,所以我的完整代码如下所示:
var longFamily = ""
let latFamily = ""
var latShop = ""
var longShop = ""
override func viewDidLoad() {
super.viewDidLoad()
getCurrent()
let coordinate₀ = CLLocation(latitude: CLLocationDegrees(Int(latFamily)!), longitude: CLLocationDegrees(Int(longFamily)!))
let coordinate₁ = CLLocation(latitude: (Int(latFamily)!, longitude: (Int(longFamily)!))
let distanceInMeters = coordinate₀.distance(from: coordinate₁) // result is in meters
let floatDistance = Float(distanceInMeters)
// get two markers with shop and client locations
map.delegate = self
// 2.
let sourceLocation = CLLocationCoordinate2D(latitude: (Int(latFamily)!, longitude: (Int(longFamily)!)
let destinationLocation = CLLocationCoordinate2D(latitude: (Int(latShop)!, longitude: (Int(latShop)!)
我知道在地图加载之前我必须做一些事情来获取数据,但不确定在哪里。非常感谢您的帮助
GetCurrent 函数调用 API:
Alamofire.request(url!, method: .get, parameters: param,encoding: URLEncoding.default, headers: headers).responseJSON { response in
if let value: AnyObject = response.result.value as AnyObject? {
//Handle the results as JSON
let data = JSON(value)
self.LongShop = data["shopLong"]
// this is for family locations too
【问题讨论】:
-
所以您基本上是想在地图加载之前从 API(而不是 MapKit)加载坐标以便显示它们?
-
@mcjcloud 是的,API 会给我坐标并且地图(MapKit)在视图中
-
IMO 这只是一个设计问题。设计您的应用程序以在您等待 API 调用返回时显示加载屏幕,然后在完成处理程序中,当您使用地理坐标成功回调时,使用地图呈现一个新的 VC。此外,您可能不应该将整数用于纬度和经度。
-
谢谢我解决了加载问题。现在,正如您刚才提到的,我对纬度和经度有疑问,因为 Int 没有将位置放在正确的位置。什么是最好的转换?或者如何将我的字符串从 API 转换为有效的纬度和经度
标签: ios swift xcode viewdidload cllocationcoordinate2d