Google maps 我的流在两次获得纬度和经度后崩溃,并且不';I don’我不明白我现在的处境。这是什么原因造成的?
在两次地理位置更新后,它崩溃并且在地图中不跟随我:Google maps 我的流在两次获得纬度和经度后崩溃,并且不';I don’我不明白我现在的处境。这是什么原因造成的?,google-maps,flutter,dart,Google Maps,Flutter,Dart,在两次地理位置更新后,它崩溃并且在地图中不跟随我: StreamSubscription subscription; super.initState(); subscription = getPositionStream(desiredAccuracy: LocationAccuracy.high, distanceFilter: 10).listen( (Position position) async { getLo
StreamSubscription subscription;
super.initState();
subscription = getPositionStream(desiredAccuracy: LocationAccuracy.high, distanceFilter: 10).listen(
(Position position) async {
getLocation();
centerScreen(position);
print(position == null ? 'Unknown' : position.latitude.toString() + ', ' + position.longitude.toString());
});
}
为了安全起见,我尝试将:subscription.resume()添加到我的_onmacreated(flattergooglemaps)中。没有影响
这是我的位置:
Future getLocation() async {
Position position =
await getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
lat = position.latitude;
lng = position.longitude;
setState(() {});
}
和我的中央屏幕功能:
Future<void> centerScreen(Position position) async {
final GoogleMapController controller = await _controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
target: LatLng(position.latitude, position.longitude),
zoom: _currentZoom)));
}
未来中心屏幕(位置)异步{
最终GoogleMapController=wait_controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
目标:LatLng(位置.纬度,位置.经度),
缩放:_currentZoom));
}
这是最新发布的颤振地理定位器和颤振谷歌地图
我两天来一直在想这个问题。。。我非常感谢你的帮助。提前谢谢。将其从我的初始状态中删除。将其传递给getLocation,如下所示:
Future getLocation() async {
subscription = getPositionStream(desiredAccuracy: LocationAccuracy.high, distanceFilter: 10).listen(
(Position position) async {
final GoogleMapController controller = await _controller.future;
// final GoogleMapController currentZoom = await _controller.zoom;
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
target: LatLng(position.latitude, position.longitude),
zoom: _currentZoom)));
});
很好用。谷歌地图颤振与地理定位器
// GoogleMapFlutter with Geolocator
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:geolocator/geolocator.dart';
class Map extends StatefulWidget {
@override
_MapState createState() => _MapState();
}
class _MapState extends State<Map> {
bool mapToggle = false;
var currentLocation;
@override
//initiate position
void initState() {
super.initState();
//Geolocation
Geolocator.getCurrentPosition().then((currloc) {
setState(() {
currentLocation = currloc;
mapToggle = true;
});
});
}
//Location Marker
Set<Marker> _createMarker() {
return <Marker>[
Marker(
markerId: MarkerId("currentLocation"),
position: LatLng(currentLocation.latitude, currentLocation.longitude),
icon: BitmapDescriptor.defaultMarker,
infoWindow: InfoWindow(title: "Your Location"),
)
].toSet();
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
mapToggle
//Google Map flutter
? GoogleMap(
mapType: MapType.normal,
markers: _createMarker(),
initialCameraPosition: CameraPosition(
target: LatLng(
currentLocation.latitude, currentLocation.longitude),
zoom: 15.0))
//Loading
: Center(
child: Text(
'Loading.. Please wait..',
style: TextStyle(fontSize: 20.0),
)),
],
);
}
}
//带地理定位器的谷歌地图颤振
进口“包装:颤振/材料.省道”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
导入“包:地理定位器/地理定位器.dart”;
类映射扩展了StatefulWidget{
@凌驾
_MapState createState();
}
类映射状态扩展状态{
boolmaptoggle=false;
无功电流定位;
@凌驾
//起始位置
void initState(){
super.initState();
//地理定位
Geolocator.getCurrentPosition().then((currloc){
设置状态(){
currentLocation=currloc;
mapToggle=true;
});
});
}
//定位标记
设置_createMarker(){
返回[
标记(
markerId:markerId(“当前位置”),
位置:LatLng(当前位置.纬度,当前位置.经度),
图标:BitmapDescriptor.defaultMarker,
infoWindow:infoWindow(标题:“您的位置”),
)
].toSet();
}
@凌驾
小部件构建(构建上下文){
返回堆栈(
儿童:[
映射切换
//谷歌地图颤振
?谷歌地图(
mapType:mapType.normal,
标记:_createMarker(),
initialCameraPosition:CameraPosition(
目标:拉丁美洲(
currentLocation.纬度,currentLocation.经度),
缩放:15.0)
//装载
:中心(
子:文本(
'正在加载..请稍候..',
样式:TextStyle(fontSize:20.0),
)),
],
);
}
}
您好,欢迎来到SO!虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。请阅读,然后