Google maps 为什么可以';t在flatter中更新谷歌地图上的位置
为什么我不能在更新位置后更改位置?我正在尝试使用asyncGoogle maps 为什么可以';t在flatter中更新谷歌地图上的位置,google-maps,flutter,Google Maps,Flutter,为什么我不能在更新位置后更改位置?我正在尝试使用asyncupdatewords来更新经度和纬度。现在我遇到了问题,当我导航到地图页面时,我还没有用户位置,我设置了默认坐标,比如LatLng(10,10)。然后在onmacreated()中,我正在更新coords,并希望在地图上有一个更新位置。但事实并非如此 地图屏幕 import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_f
updatewords
来更新经度
和纬度
。现在我遇到了问题,当我导航到地图页面时,我还没有用户位置,我设置了默认坐标,比如LatLng(10,10)
。然后在onmacreated()
中,我正在更新coords,并希望在地图上有一个更新位置。但事实并非如此
地图屏幕
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:locationApp/services/location.dart';
import 'package:provider/provider.dart';
import 'package:locationApp/services/store_data.dart';
class GoogleMapScreen extends StatefulWidget {
static String route = 'GoogleMapScreen';
@override
_GoogleMapScreenState createState() => _GoogleMapScreenState();
}
class _GoogleMapScreenState extends State<GoogleMapScreen> {
GoogleMapController _controller;
final Set<Polyline> _polylines = {};
Location location = Location();
@override
void initState() {
super.initState();
}
void onMapCreated(GoogleMapController controller) async {
List<LatLng> points = await location.getRoute(
[40.6782, -73.9442],
[40.6944, -73.9212],
);
Polyline polylineRoute = Polyline(
polylineId: PolylineId('route'),
width: 5,
color: Colors.deepPurple,
points: points,
);
setState(() {
Provider.of<StoreData>(context, listen: false).location.updateCoords();
_controller = controller;
_polylines.add(polylineRoute);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: GoogleMap(
onMapCreated: onMapCreated,
initialCameraPosition: CameraPosition(
target: LatLng(
Provider.of<StoreData>(context).location.longitude,
Provider.of<StoreData>(context).location.latitude,
),
zoom: 14.0,
),
mapType: MapType.normal,
polylines: _polylines,
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
导入“包:locationApp/services/location.dart”;
导入“包:provider/provider.dart”;
导入“包:locationApp/services/store_data.dart”;
类GoogleMapScreen扩展StatefulWidget{
静态字符串路由='GoogleMapScreen';
@凌驾
_GoogleMapScreenState createState()=>\u GoogleMapScreenState();
}
类\u GoogleMapScreenState扩展状态{
GoogleMapController\u控制器;
最终集_多段线={};
位置=位置();
@凌驾
void initState(){
super.initState();
}
void onMapCreated(GoogleMapController)异步{
列表点=等待位置.getRoute(
[40.6782, -73.9442],
[40.6944, -73.9212],
);
多段线polylineRoute=多段线(
polylineId:polylineId('route'),
宽度:5,
颜色:颜色。深紫色,
点:点,,
);
设置状态(){
Provider.of(context,listen:false).location.updateWord();
_控制器=控制器;
_多段线。添加(多段线路由);
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:谷歌地图(
onMapCreated:onMapCreated,
initialCameraPosition:CameraPosition(
目标:拉丁美洲(
Provider.of(context.location.longitude),
Provider.of(context.location.latitude),
),
缩放:14.0,
),
mapType:mapType.normal,
多段线:_多段线,
),
);
}
}
store_data.dart服务
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:locationApp/services/hotel.dart';
import 'package:locationApp/services/location.dart';
import 'package:geolocator/geolocator.dart';
import 'package:http/http.dart' as http;
class StoreData extends ChangeNotifier {
Location location = Location();
Future<void> updateCoords() async {
await location.updateCoords();
}
}
导入'dart:convert';
进口“包装:颤振/材料.省道”;
导入“包:locationApp/services/hotel.dart”;
导入“包:locationApp/services/location.dart”;
导入“包:地理定位器/地理定位器.dart”;
将“package:http/http.dart”导入为http;
类StoreData扩展ChangeNotifier{
位置=位置();
Future updateCoords()异步{
等待位置。updateCoords();
}
}