【发布时间】:2021-08-18 19:57:12
【问题描述】:
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:geolocator/geolocator.dart';
//import 'package:provider/provider.dart';
class Map extends StatefulWidget {
@override
State<StatefulWidget> createState() => _MapState();
}
class _MapState extends State<Map> {
Completer<GoogleMapController> _controllerGoogleMap = Completer();
GoogleMapController newGoogleMapController;
Position currentPosition;
var geoLocator = Geolocator();
void locatePosition() async {
Position position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.best);
currentPosition = position;
LatLng latLngPos = LatLng(position.latitude, position.longitude);
CameraPosition cameraPosition =
CameraPosition(target: latLngPos, zoom: 15.0);
newGoogleMapController
.animateCamera(CameraUpdate.newCameraPosition(cameraPosition));
}
static final CameraPosition _kGooglePlex = CameraPosition(
target: LatLng(37.42796133580664, -122.085749655962),
zoom: 14.4746,
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: GoogleMap(
mapType: MapType.normal,
myLocationButtonEnabled: true,
initialCameraPosition: _kGooglePlex,
myLocationEnabled: true,
zoomGesturesEnabled: true,
zoomControlsEnabled: true,
onMapCreated: (GoogleMapController controller) {
_controllerGoogleMap.complete(controller);
newGoogleMapController = controller;
locatePosition();
},
),
),
);
}
}
调试终端下
Launching lib\main.dart on vivo 1906 in debug mode...
lib\main.dart:1 √ Built build\app\outputs\flutter-apk\app-debug.apk. I/flutter ( 9154):
Observatory listening on ************************************ I/flutter ( 9613):
Observatory listening on ************************************ E/flutter ( 9613): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception:
User denied permissions to access the device's location. E/flutter ( 9613):
#0 MethodChannelGeolocator._handlePlatformException package:geolocator_platform_interface/…/implementations/method_channel_geolocator.dart:199
E/flutter ( 9613): #1 MethodChannelGeolocator.getCurrentPosition package:geolocator_platform_interface/…/implementations/method_channel_geolocator.dart:
118 E/flutter ( 9613): <asynchronous suspension> E/flutter ( 9613): #2 _MapState.locatePosition package:donation_yoga/screens/maps.dart:
21 E/flutter ( 9613): <asynchronous suspension> E/flutter ( 9613):
我从未拒绝过我的许可, 此外,即使我已启用它以获取当前位置,地图也不会显示我的位置按钮, 只显示放大和缩小按钮以及地图。
使用 Flutter 2.2.1 google_maps_flutter:^2.0.6 地理定位器:^7.0.3
PS:我尝试过定位包,但是它会抛出很多错误,例如找不到 location_web 等,
【问题讨论】:
-
您是否按照安装说明并在您的 AndroidManifest.xml 文件中添加了权限声明?你能包括你的
android/app/src/main/AndroidManifest.xml吗? -
.....
标签: flutter google-maps