Il semble avoir tout écrit correctement, mais je ne comprends pas pourquoi il n'affiche pas ma position sur la carte.
Pourquoi ne montre-t-il pas ma position?
import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class MyMap extends StatefulWidget { @override MyMapState createState() => MyMapState(); } class MyMapState extends State<MyMap> { GoogleMapController mapController; final LatLng _center = const LatLng(50.006406, 36.236484); void _onMapCreated(GoogleMapController controller) { mapController = controller; mapController.addMarker( MarkerOptions( position: LatLng(50.006406, 36.236484), infoWindowText: InfoWindowText('My Location', 'Office'), icon: BitmapDescriptor.defaultMarker, ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Map'), backgroundColor: Colors.green[700], ), body: GoogleMap( onMapCreated: _onMapCreated, options: GoogleMapOptions( scrollGesturesEnabled: true, tiltGesturesEnabled: true, rotateGesturesEnabled: true, myLocationEnabled: true, compassEnabled: true, cameraPosition: CameraPosition( target: _center, zoom: 11.0, ), ), ), ); } }
5 Réponses :
vous devez utiliser le package location de flutter afin de suivre l'emplacement du user, et vous devez ajouter cette fonction à votre code
import 'package:location/location.dart';
cette fonction doit être appelée dans votre fonction initState ()
comme suit
@override void initState() { _getLocation(); super.initState(); }
et n'oubliez pas d'importer le package de localisation dans votre code,
_getLocation() async { var location = new Location(); try { currentLocation = await location.getLocation(); print("locationLatitude: ${currentLocation["latitude"]}"); print("locationLongitude: ${currentLocation["longitude"]}"); setState( () {}); //rebuild the widget after getting the current location of the user } on Exception { currentLocation = null; } }
suivez le guide d'installation du package de localisation selon vos besoins ajoutez l'autorisation de localisation dans AndroidManifest.xml
pour Android et info.plist
pour iPhone
le package de localisation sera chargé de demander l'autorisation de localisation à l'utilisateur lors de l'exécution.
J'espère que cela vous aidera et bonne chance
Vous devez fournir un accès à votre position actuelle ios: Info.plist
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
android: AndroidManifest.xml
<key>NSLocationWhenInUseUsageDescription</key> <string>Application needs to access your current location</string> <key>NSLocationAlwaysUsageDescription</key> <string>Application needs to access your current location</string>
Je suggère d'utiliser la méthode ci-dessous. Tout d'abord, vous définissez LocationData currentLocation; var location = nouvel emplacement (); dans global.Deuxièmement, vous créez la méthode myCurrentLocation (), et utilisez-la pour la dernière fois initState () ou cliquez sur le bouton.N'oubliez pas l'importation dans AndroidMainfest.xml et ce chemin de classe 'com.google.gms: google-services: 4.3.2' android /build.gradle.
LocationData currentLocation; var location = new Location(); myCurrentLocation() async{ try { currentLocation = await location.getLocation(); print("locationLatitude: ${currentLocation.latitude.toString()}"); print("locationLongitude: ${currentLocation.longitude.toString()}"); } on PlatformException catch (e) { if (e.code == 'PERMISSION_DENIED') { String error = 'Permission denied'; print(error); } currentLocation = null; }}
Bonjour, bienvenue dans SO, veuillez fournir quelques explications sur ce que fait votre code, cela peut aider d'autres utilisateurs qui pourraient chercher une solution à comprendre :)
Tout d'abord, désolé mon mauvais anglais. Vous définissez LocationData currentLocation; var location = nouvel emplacement (); ceci en tant que global et après avoir créé la méthode myCurrentLoacation.Et enfin, vous utilisez la méthode initState ou un clic sur n'importe quel bouton pour obtenir la position actuelle de l'utilisateur.
rien à redire, merci d'avoir ajouté un peu plus de détails, il vous suffit maintenant de modifier votre réponse et d'ajouter cette information là-bas.
Si vous souhaitez voir votre position actuelle sur la carte et activer la fonctionnalité FAB en bas à droite qui vous y mène, assurez-vous que vous disposez de la propriété myLocationEnabled défini sur true sur votre widget GoogleMap.
[...] body: GoogleMap( myLocationEnabled: true, [...] )
GoogleMap( onMapCreated: _onMapCreated, initialCameraPosition: CameraPosition( target: _center, zoom: 13.0, ), myLocationEnabled: true, onCameraMove: _onCameraMove, myLocationButtonEnabled: true,
@devpato ce n'est pas une réponse de lien seulement. Il a du code et il n'y a même pas de lien. Si vous pensez que ce code est erroné ou inutile, l'action correcte consiste à voter contre.
@RobertColumbia je clique sur la mauvaise option, alors je me suis donné. Je voulais dire que cette réponse nécessite plus d'explications, pas seulement la réponse
avez-vous demandé l'autorisation de localisation?
Mais comment le faire ?