Problème de Coordonnée - Application Busbus

#1

Bonjour, je suis actuellement en train de suivre la formation de @mbritto pour concevoir une app IOS (niveau avancé) et j’en suis à l’étape de concevoir l’application Busbus.
J’ai suivi pas à pas chaque étape de la réalisation de cette app, cependant je suis arrivé à la fin et à ce moment là j’ai eu un problème au niveau des cordonnées de chaque arrêt (récupérer auparavant sur le site “opendata de la ville se Sète »).
En effet, dans mon code, je parviens bien à ressortir les données de type: nom de l’arret, lignes et type, cependant au moment de compiler l’application, lorsque je lance l’application sur le simulateur et puis aucun arrêt de bus n’apparaît!
Pour corriger ce problème j’ai essayer plusieurs choses dans mon code (le comparer plusieurs fois à celui de @mbritto, imprimer dans la console chaque élément) et de ce fait j’ai découvert que je ne réussissais pas à récupérer chaque coordonnées (d’où le manque d’arrêt sur ma carte).
Enfin, la seule chose différente entre le code du cour et mon code, c’est la fonction qui permet de convertir le type de coordonnée, en effet dans le code original, celle-ci s’appelle « CLLocationCoordinate2DFromCoordinate » cependant dans Xcode on m’indique qu’il s’agit d’une ancienne fonction et que celle-ci est désormais remplacée par « CLLocationCoordinate2D ».
Du coup peut être que l’erreur viens de là. Cependant si vous voyer quelque chose d’autre qui ne va pas, une autre erreur ou tout simplement la solution à mon problème, je serais enchanté de connaître la solution !
Dans l’attente de vos réponses, merci beaucoup pour votre aide !!!

#2

Le fait d’utiliser CLLocation2DFromCoordinate fait planter ton code ou XCode te recommande juste d’utiliser la fonction plus récente ?

#3

Dans mon code, je ne peux pas utiliser la fonction qu’utilise @mbritto dans son cours, car une erreur apparaît et me dit que cette fonction en est une vieille désormais remplacée par “CLLocationCoordinate2D”. De ce fait je ne peut pas compiler le code avec la fonction du cours car il ne la reconnaît pas !

#4

Je viens de regarder un peu et la fonction CLLocation2DFromCoordinate n’existe nulle part !
Quel est le nom exact de celle dans le cours de Maxime et celle que tu utilises ?

#5

Excusez-Moi, je me suis trompé en écrivant le nom de la fonction, en fait @mbritto utilise la fonction “CLLocationCoordinate2DFromCoordinate” et dans mon code celle-ci souhaite être remplacée par “CLLocationCoordinate2D”.
Comme le montre les images suivantes:

#6

Et, dans le code, la variable coordinate que tu appelles avec self.coordinate, elle est initialisée avec quel type ?

#7

Elle est de type “CLLocationCoordinate2D”
Variable

#8

Alors CLLocationCoordinate2D devrait faire le travail.

Quelle est la suite de ton code ? Là où tu viens ajouter les annotations sur la carte.

#9

Le Voici

#10

Et si tu fais un print(busStop) juste avant ui_map.addAnnotation(busStop) tu obtiens quelque chose dans la console ?

#11

Non, je n’obtiens rien dans la console

#12

Donc ça veut dire qu’il y a un souci dans ta fonction downloadPointOfInterest

Debug au fur et à mesure, voir si tu as quelque chose dans features, dans feature, etc. et tu trouveras certainement ce qui ne fonctionne pas !

#13

Merci pour tes réponses, mais je suis assez débutant en développement IOS, et je ne sais pas comment faire pour debugger une fonction, pourrais tu me donner des conseils stp (si tu as besoins, tu as la capture d’écran de la fonction “point of interest” un peu plus haut dans la conversation) !

#14

Tu peux commencer à faire des print un peu partout dans ta fonction.
Notamment, un print(features) juste avant la boucle for et un print(feature) juste avant le if let busStop(...) et regarde si tu vois des choses suspectes dans la console.

#15

J’ai terminé récemment l’application Busbus.

Il faut effectivement remplacer:
self .coordinate = CLLocationCoordinate2DFromCoordinate(point.coordinate)
par
self .coordinate = CLLocationCoordinate2D(point.coordinate)

Attention aussi à la version de GeoJSON, il faut utiliser la version 4.1.1 car la version 5.0.0 est très différente.