Flutter - google map, does not show my location

时间秒杀一切 提交于 2019-12-24 00:21:58

问题


It seems to have written everything correctly but I can not understand why it does not show my location on the map.

Why is it not showing my location?

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,
            ),
          ),
        ),
      );
  }
}

回答1:


you need to use the location package of flutter in order to track the location of the user, and you need to add this function to your 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;
    }
  }

this function should be called in your initState() function as follows

@override
  void initState() {
    _getLocation();
    super.initState();
  }

and don't to forget to import the location package to your code,

import 'package:location/location.dart';

follow the installation guide of the location package as you need to add the location permission in AndroidManifest.xml for android and info.plist for iphone the location package will be responsible for asking for location permission from the user at runtime

Hope it helps and good luck




回答2:


You have to provide an access to your current location 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" />



回答3:


If you want to see your current location on the map, and enable the lower right FAB functionality that takes you there, make sure you have the property myLocationEnabled set to true on your GoogleMap Widget.

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



回答4:


i suggest use below method.First you set LocationData currentLocation; var location = new Location(); in global.Second you create myCurrentLocation() method.And last use it initState() or button click.Don't forget import in AndroidMainfest.xml and this classpath '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;
}}


来源:https://stackoverflow.com/questions/54426364/flutter-google-map-does-not-show-my-location

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!