我正在尝试开发一个集成了谷歌地图的 Flutter 应用程序。谷歌地图在颤动屏幕中完美显示。该圆圈还在预定义的经纬度期间显示,但是一旦我使用用户的当前位置,该圆圈就不会显示在显示用户当前位置的地图中。
以下是我的代码:
class Get_address extends StatefulWidget{
@override
_Get_addressState createState() => _Get_addressState();
}
class _Get_addressState extends State<Get_address> {
GoogleMapController googleMapController;
double zoomVal=5.0;
Completer<GoogleMapController> _controller = Completer();
Position _currentPosition;
double latitude = 40.712776;
double longitude = -74.005974;
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
body: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
children: [
Text(
'Choose a location to see what\'s available',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.lightBlue[900],
fontWeight: FontWeight.bold,
fontSize: 30,
),
),
SizedBox(
height: 20,
),
Stack(
children: [
_buildGoogleMap(context),
_zoomminusfunction(),
_zoomplusfunction(),
],
),
SizedBox(
height: 20,
),
RaisedButton(
onPressed: getCurrentLoaction,
child: Text('Press'),
)
],
),
),
);
}
Widget _zoomminusfunction() {
return Align(
alignment: Alignment.topLeft,
child: IconButton(
icon: Icon(FontAwesomeIcons.searchMinus,color:Color(0xff6200ee)),
onPressed: () {
zoomVal--;
_minus( zoomVal);
}),
);
}
Widget _zoomplusfunction() {
return Align(
alignment: Alignment.topRight,
child: IconButton(
icon: Icon(FontAwesomeIcons.searchPlus,color:Color(0xff6200ee)),
onPressed: () {
zoomVal++;
_plus(zoomVal);
}),
);
}
Widget _buildGoogleMap(BuildContext context) {
return Container(
height: 425,
width: MediaQuery.of(context).size.width,
child: GoogleMap(
mapType: MapType.normal,
initialCameraPosition: CameraPosition(target: LatLng(40.712776, -74.005974), zoom: 12),
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
},
myLocationButtonEnabled: true,
circles: _myCircles(latitude,longitude),
),
);
}
Future<void> _minus(double zoomVal) async {
final GoogleMapController controller = await _controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(target: LatLng(40.712776, -74.005974), zoom: zoomVal)));
}
Future<void> _plus(double zoomVal) async {
final GoogleMapController controller = await _controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(target: LatLng(40.712776, -74.005974), zoom: zoomVal)));
}
void getCurrentLoaction() async{
Geolocator
.getCurrentPosition(desiredAccuracy: LocationAccuracy.best)
.then((Position position) {
setState(() async {
_currentPosition = position;
PermissionStatus permission;
permission = await LocationPermissions().requestPermissions();
final GoogleMapController controller = await _controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(target: LatLng(_currentPosition.latitude,_currentPosition.longitude), zoom: 15,tilt: 50.0,
bearing: 45.0,)));
latitude = _currentPosition.latitude;
longitude = _currentPosition.longitude;
});
}).catchError((e) {
print(e);
});
}
Set<Circle> _myCircles(double latitude1, double longitude1) {
return Set.from([Circle(
circleId: CircleId('1'),
center: LatLng(latitude1, longitude1),
radius: 4000,
)]);
}
}
如果用户使用当前位置,有人可以帮助我如何在地图上显示圆圈吗?