web-dev-qa-db-fra.com

Flutter - google map, n'affiche pas ma position

Il semble avoir tout écrit correctement mais je ne comprends pas pourquoi il ne montre 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,
            ),
          ),
        ),
      );
  }
}
3
Max Zubko

vous devez utiliser le package location de flutter pour suivre l'emplacement de l'utilisateur, et vous devez ajouter cette fonction à 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;
    }
  }

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,

import 'package:location/location.Dart';

suivez le guide d'installation du package de localisation car vous devez ajouter l'autorisation de localisation dans AndroidManifest.xml pour Android et info.plist pour iphone, le package de localisation sera responsable de demande d'autorisation de localisation à l'utilisateur lors de l'exécution

J'espère que ça aide et bonne chance

4
Sami Kanafani

Si vous voulez voir votre emplacement actuel sur la carte, et activez la fonctionnalité en bas à droite FAB qui vous y emmène, assurez-vous vous avez la propriété myLocationEnabled définie sur true sur votre widget GoogleMap.

      [...]
      body: GoogleMap(
          myLocationEnabled: true,
          [...]
      )
2
Mengrolek

Vous devez fournir un accès à votre emplacement actuel ios: Info.plist

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Application needs to access your current location</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>Application needs to access your current location</string>

Android: AndroidManifest.xml

<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
2
korgara

je suggère d'utiliser la méthode ci-dessous. Premièrement, vous définissez LocationData currentLocation; var location = new Location (); dans global.Second vous créez la méthode myCurrentLocation () et utilisez-la en dernier initState () ou cliquez sur le bouton.N'oubliez pas d'importer 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;
}}
0
Khayyam
    GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 13.0,
),
myLocationEnabled: true,
onCameraMove: _onCameraMove,
myLocationButtonEnabled: true,
0
ishane