Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 为什么可以';t在flatter中更新谷歌地图上的位置_Google Maps_Flutter - Fatal编程技术网

Google maps 为什么可以';t在flatter中更新谷歌地图上的位置

Google 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

为什么我不能在更新位置后更改位置?我正在尝试使用async
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();
}
}