J'essaie de montrer une carte avec deux marqueurs avec des longitudes et des latitudes qui sont extraites de l'API.charger la latitude et la longitude à partir de l'API avant de charger la carte Swift 3
la fonction qui obtient les longitudes et latitudes est appelé à Viewdidload
override func viewDidLoad() {
super.viewDidLoad()
getCurrent()
également le code pour afficher la carte avec des marqueurs en viewdidload
donc mon code complet ressemble à quelque chose comme ceci:
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)!)
Je sais qu'il y a quelque chose que je dois faire pour obtenir les données avant que la carte ne charge, mais je ne sais pas où. Je vous remercie de votre aide
fonction GetCurrent appelle 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
Donc, vous voulez essentiellement pour charger les coordonnées d'une API (non MapKit), avant le chargement de carte afin vous pouvez les afficher? – mcjcloud
@mcjcloud oui l'API me donnera les coordonnées et la carte est (MapKit) est dans la vue – leo0019
IMO c'est juste un problème de conception. Concevez votre application pour afficher un écran de chargement pendant que vous attendez l'appel de l'API, puis, dans le gestionnaire de complétion lorsque vous obtenez le rappel réussi avec les coordonnées géographiques, présentez un nouveau VC avec la carte. De même, vous ne devriez probablement pas utiliser d'entiers pour la latitude et la longitude. – Pierce