Javascript 颤振-谷歌地图,不显示我的位置

Javascript 颤振-谷歌地图,不显示我的位置,javascript,flutter,google-maps-markers,Javascript,Flutter,Google Maps Markers,它似乎把所有的东西都写对了,但我不明白为什么它没有在地图上显示我的位置 为什么它没有显示我的位置 import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class MyMap extends StatefulWidget { @override MyMapState createState() => MyMapState(); }

它似乎把所有的东西都写对了,但我不明白为什么它没有在地图上显示我的位置

为什么它没有显示我的位置

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,
            ),
          ),
        ),
      );
  }
}
导入“包装:颤振/材料.省道”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
类MyMap扩展了StatefulWidget{
@凌驾
MyMapState createState()=>MyMapState();
}
类MyMapState扩展了状态{
谷歌地图控制器;
最终板条中心=常数板条(50.006406,36.236484);
void\u onMapCreated(谷歌地图控制器){
mapController=控制器;
mapController.addMarker(
标记选项(
位置:LatLng(50.006406,36.236484),
infoWindowText:infoWindowText(“我的位置”、“办公室”),
图标:BitmapDescriptor.defaultMarker,
),
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“地图”),
背景颜色:颜色。绿色[700],
),
正文:谷歌地图(
onMapCreated:_onMapCreated,
选项:谷歌地图选项(
scrollGesturesEnabled:正确,
倾斜姿势启用:正确,
RotategeStureEnabled:正确,
myLocationEnabled:对,
同谋:是的,
cameraPosition:cameraPosition(
目标:_中心,
缩放:11.0,
),
),
),
);
}
}
您需要使用颤振软件包来跟踪用户的位置,并且需要将此功能添加到代码中

_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;
    }
  }
应该在
initState()函数中调用此函数,如下所示

@override
  void initState() {
    _getLocation();
    super.initState();
  }
别忘了将location包导入到代码中

import 'package:location/location.dart';
请遵循location软件包的安装指南,因为您需要在android的
AndroidManifest.xml
和iphone的
info.plist
中添加位置权限 位置包将负责在运行时向用户请求位置权限


希望有帮助,祝你好运

你必须提供一个访问当前位置的权限 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>

n不使用时的位置说明
应用程序需要访问您的当前位置
N位置始终使用说明
应用程序需要访问您的当前位置
android:AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

我建议使用以下方法。首先设置LocationData currentLocation; var location=新位置();在global.Second中创建myCurrentLocation()方法。最后使用它initState()或单击按钮。不要忘记在AndroidMainfest.xml和这个类路径'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;
}}

如果您想在地图上查看您的当前位置,并启用右下角的FAB功能,请确保您的GoogleMap小部件上的属性myLocationEnabled设置为true

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

你要求位置许可了吗?但是怎么做呢?
将这两行粘贴到你的Android清单文件中。如果在emulator中运行,则切换到物理设备。因为emulator无法显示您的当前位置。您好,欢迎使用SO,请提供有关您的代码的一些解释,它可以帮助其他可能正在寻找解决方案的用户理解:)首先,对不起,我的英语不好。您设置了LocationData currentLocation;var location=新位置();这是全局的,在您创建MyCurrentLocation方法之后。最后您使用方法initState或单击任何按钮来获取当前用户的loaction。不必感到抱歉,感谢您添加了更多的详细信息,现在只需编辑您的答案并将此信息添加到那里。@devpato这不是一个仅链接的答案。它有代码,甚至没有链接。如果你认为这段代码是错误的或没有用,正确的做法是否决投票。@RobertColumbia我点击了错误的选项,所以给了我。我的意思是,这个答案需要更多的解释,不仅仅是对位置的回答,而且不是对GoogleMap颤振小部件的正确回答
    GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 13.0,
),
myLocationEnabled: true,
onCameraMove: _onCameraMove,
myLocationButtonEnabled: true,