【发布时间】:2019-08-26 11:33:59
【问题描述】:
我正在为我的应用程序使用谷歌地图颤振插件。我希望初始相机位置目标(LatLng)完全等于当前设备的纬度和经度,以便启动时的相机显示用户当前所在的位置。但是,我在尝试这样做时遇到了问题。我曾尝试使用 Location 和 Geolocator 包,但没有明确的示例说明如何做我想要实现的目标。
当我尝试将 currentLocation.latitude 和 currentLocation.longitude 用于 Location 包作为相机目标中 Latlng 的值时,我遇到了以下错误。
"只有静态成员可以被初始化器访问"
坦率地说,我不知道在这种情况下这意味着什么。我已经阅读了一些示例,但没有一个清楚地实现了我真正想要实现的目标
import 'package:flutter/cupertino.dart';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location/location.dart';
class Map extends StatefulWidget {
@override
State<Map> createState() => MapState();
}
class MapState extends State<Map> {
Completer<GoogleMapController> _controller = Completer();
var currentLocation = LocationData;
var location = new Location();
Future _getLocation() async {
try {
location.onLocationChanged().listen((LocationData currentLocation) {
print('Latitude:${currentLocation.latitude}');
print('Longitude:${currentLocation.longitude}');
return LatLng(currentLocation.latitude, currentLocation.longitude);
});
} catch (e) {
print('ERROR:$e');
currentLocation = null;
}
}
static final CameraPosition _currentPosition = CameraPosition(
target: LatLng(currentLocation.latitude , currentLocation.longitude),
zoom: 14.4746,
);
@override
void initState() {
_getLocation();
super.initState();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: GoogleMap(
mapType: MapType.normal,
initialCameraPosition: _currentPosition,
zoomGesturesEnabled: true,
myLocationButtonEnabled: true,
rotateGesturesEnabled: true,
tiltGesturesEnabled: true,
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
},
),
);
}
}
这是我的代码 sn-p 在 _currentPosition final 上产生错误,代表相机位置,使用定位器包将其等同于当前设备的纬度和经度,但 Flutter 抱怨。我不知道如何正确地做到这一点。我希望 latlng 目标是设备的 latlng
【问题讨论】:
标签: google-maps flutter