MIT App Inventor (débutants), pas à pas, pour :
- afficher une carte
- afficher ta position (point + coordonnées)
- 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
- Map → nom :
Map1
(Catégorie “Maps”) - Label → nom :
LabelPos- Text :
Position : -- - FontSize : 16
- Text :
- Button → nom :
BtnSend- Text :
Envoyer ma géoloc
- Text :
- 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
- LocationSensor → nom :
LocationSensor1- TimeInterval :
1000(1 seconde) - DistanceInterval :
1(1 mètre)
- TimeInterval :
- (Optionnel mais pratique) Notifier →
Notifier1 - (Optionnel pour plus tard) Web →
Web1(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
- Zoom par défaut
set Map1.ZoomLevel to 16
- Centre par défaut
set Map1.CenterFromString to "48.0000,-2.0000"
(ou une autre ville si tu veux)
- 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 :
- Déplacer le point (Marker1)
set Marker1.Latitude to get latitudeset Marker1.Longitude to get longitude
- Centrer la carte sur toi
set Map1.CenterFromString to join get latitude "," get longitude
⚠️ IMPORTANT : il faut la virgule entre les deux.
- Zoomer près de toi
set Map1.ZoomLevel to 18
- 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
- (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 :
- Mettre dans TxtJson.Text
set TxtJson.Text to join"{""\"lat\":"LocationSensor1.Latitude",""\"lon\":"LocationSensor1.Longitude"}"
✅ Exemple affiché :
{"lat":48.12345,"lon":-2.45678}
- (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
