Appli Géolocalisation -> Robot

MIT App Inventor (débutants), pas à pas, pour :

  1. afficher une carte
  2. afficher ta position (point + coordonnées)
  3. bouton “Envoyer ma géoloc au robot”
    ➡️ pour l’instant, on n’envoie rien : on affiche juste le JSON qui serait envoyé.

1) DESIGNER (à faire tranquillement)

A) Créer le projet

  • Create new project → nom : GeoRobot

B) Ajouter les composants visibles

  1. Map → nom : Map1
    (Catégorie “Maps”)
  2. Label → nom : LabelPos
    • Text : Position : --
    • FontSize : 16
  3. Button → nom : BtnSend
    • Text : Envoyer ma géoloc
  4. TextBox → nom : TxtJson
    • Text : vide
    • MultiLine = true
    • Width = Fill parent
    • Height = 120 px (ou plus)
    • (Optionnel) Enabled = false (pour juste afficher)

C) Ajouter les composants non visibles

  1. LocationSensor → nom : LocationSensor1
    • TimeInterval : 1000 (1 seconde)
    • DistanceInterval : 1 (1 mètre)
  2. (Optionnel mais pratique) NotifierNotifier1
  3. (Optionnel pour plus tard) WebWeb1 (pour envoyer au robot plus tard)

D) Ajouter un marqueur (point sur la carte)

  • Dans “Maps”, ajoute Marker → nom : Marker1
    • (il peut être “dans” Map1 dans l’arborescence)

2) BLOCKS (la logique)

A) Au démarrage : préparer la carte

when Screen1.Initialize

  1. Zoom par défaut
  • set Map1.ZoomLevel to 16
  1. Centre par défaut
  • set Map1.CenterFromString to "48.0000,-2.0000"
    (ou une autre ville si tu veux)
  1. Texte
  • set LabelPos.Text to "Position : en attente du GPS"

✅ Voilà : la carte s’ouvre déjà sur un endroit, même sans GPS.


B) Quand le GPS donne une position : afficher sur la carte

Bloc à utiliser (il existe chez toi) :

when LocationSensor1.LocationChanged (latitude, longitude, altitude, speed)
(les paramètres peuvent varier, mais tu as au moins latitude/longitude)

À l’intérieur, mets dans cet ordre :

  1. Déplacer le point (Marker1)
  • set Marker1.Latitude to get latitude
  • set Marker1.Longitude to get longitude
  1. Centrer la carte sur toi
  • set Map1.CenterFromString to join get latitude "," get longitude

⚠️ IMPORTANT : il faut la virgule entre les deux.

  1. Zoomer près de toi
  • set Map1.ZoomLevel to 18
  1. Afficher les coordonnées
  • set LabelPos.Text to join "Position : " get latitude " , " get longitude

✅ Résultat : la carte se centre automatiquement sur toi + zoom + point rouge.


C) Bouton “Envoyer ma géoloc” : afficher le JSON (sans envoyer)

Bloc :

when BtnSend.Click

  1. (Optionnel mais conseillé) Si GPS pas prêt :
  • if LocationSensor1.Latitude = 0
    call Notifier1.ShowAlert "GPS pas prêt (attends)"

Sinon (dans le else), fabriquer le JSON :

  1. Mettre dans TxtJson.Text
  • set TxtJson.Text to join
    • "{"
    • "\"lat\":"
    • LocationSensor1.Latitude
    • ","
    • "\"lon\":"
    • LocationSensor1.Longitude
    • "}"

✅ Exemple affiché :

{"lat":48.12345,"lon":-2.45678}
  1. (Optionnel) message
  • call Notifier1.ShowAlert "JSON prêt (non envoyé)"

D) (Optionnel) Mise à jour automatique du JSON

Si tu veux que le JSON se mette à jour tout seul à chaque déplacement, tu peux aussi ajouter dans LocationChanged :

  • set TxtJson.Text to ... (le même join)

Mais pour les débutants, c’est mieux uniquement au clic.


Résultat final attendu

  • Carte centrée et zoomée sur ta position
  • Marker1 sur toi
  • LabelPos affiche les coordonnées
  • Bouton affiche le JSON dans TxtJson