Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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 颤振谷歌地图标记从JSON文件_Google Maps_Flutter_Dart - Fatal编程技术网

Google maps 颤振谷歌地图标记从JSON文件

Google maps 颤振谷歌地图标记从JSON文件,google-maps,flutter,dart,Google Maps,Flutter,Dart,我正试图根据Json文件中的字符串向地图小部件添加标记。当我运行代码时,贴图不会渲染。我认为我没有正确访问列表。 flatter\u Google\u maps小部件中的markers:属性现在采用Set() 我看到了对问题的其他回答:“要添加标记,首先应该创建一个空的类型标记集,并将其分配给google maps小部件中的markers:属性。因此,可以使用add()方法将所需的标记()附加到所创建的集。最后,使用setState()重建小部件并在UI上显示更新的标记集。”但这没有帮助 以下是

我正试图根据Json文件中的字符串向地图小部件添加标记。当我运行代码时,贴图不会渲染。我认为我没有正确访问列表。 flatter\u Google\u maps小部件中的markers:属性现在采用Set()

我看到了对问题的其他回答:“要添加标记,首先应该创建一个空的类型标记集,并将其分配给google maps小部件中的markers:属性。因此,可以使用add()方法将所需的标记()附加到所创建的集。最后,使用setState()重建小部件并在UI上显示更新的标记集。”但这没有帮助

以下是我目前的代码:

JSON:

地图:

导入'dart:async';
导入“dart:convert”;
进口“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
导入“包:gtbuddy/src/models/routes.dart”;
导入“package:gtbuddy/src/ui/components/serviceare.dart”;
类MapSample扩展StatefulWidget{
选择的最终字符串为Station;
MapSample({this.selectedStation});
@凌驾
State createState()=>MapSampleState();
}
类MapSampleState扩展状态{
未来,未来;;
Future loadString()异步=>
//等待rootBundle.loadString('assets/Routes/coords_${widget.selectedStation}.json');
等待rootBundle.loadString('assets/route/coords_${widget.selectedStation}.json');
列出所有标记=[];
GoogleMapController\u控制器;
@凌驾
void initState(){
//TODO:实现initState
super.initState();
_future=loadString();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“公交路线”),
标题:对,
背景颜色:颜色。来自RGBO(59,62,64,1),
行动:[
扁平按钮(
textColor:Colors.white,
已按下:(){
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>busStationList()),
);
},
子:图标(Icons.add),
),
],
),
主体:堆栈(子对象:[
容器(
高度:MediaQuery.of(context).size.height,
宽度:MediaQuery.of(context).size.width,
孩子:未来建设者(
未来:未来,
生成器:(上下文,异步快照){
如果(!snapshot.hasData){
返回循环ProgressIndicator();
}
List parsedJson=jsonDecode(snapshot.data);
allMarkers=parsedJson.map((元素){
element.coords.forEach((内部项){
返回标记(
//在这里,您需要创建一个随机名称。
markerId:markerId(internalItem.iD),
位置:LatLng(internalItem.latitude,internalItem.longitude));
});
}).toList();
返回谷歌地图(
initialCameraPosition:CameraPosition(
目标:LatLng(-26.0000,28.0000),缩放:10.151926040649414),
标记:从(所有标记)设置,
onMapCreated:mapCreated,
);
},
),
),
]),
);
}
已创建无效映射(控制器){
设置状态(){
_控制器=控制器;
});
}
}

除一组标记之外的映射不列出,因此使用{}不[]使用

Set<Marker> allMarkers = {};
Set allMarkers={};
import 'dart:async';
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:gtbuddy/src/models/routes.dart';
import 'package:gtbuddy/src/ui/components/serviceArea.dart';



class MapSample extends StatefulWidget {

  final String selectedStation;


  MapSample({this.selectedStation});


@override
State<MapSample> createState() => MapSampleState();
}

class MapSampleState extends State<MapSample> {
  Future _future;

  Future<String> loadString() async =>
//      await rootBundle.loadString('assets/Routes/coords_${widget.selectedStation}.json');
  await rootBundle.loadString('assets/route/coords_${widget.selectedStation}.json');
  List<Marker> allMarkers = [];
  GoogleMapController _controller;




  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _future = loadString();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Bus Routes"),
        centerTitle: true,
        backgroundColor: Color.fromRGBO(59, 62, 64, 1),
        actions: <Widget>[
          FlatButton(
            textColor: Colors.white,
            onPressed: () {
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => busStationList()),
              );
            },
            child: Icon(Icons.add),
          ),
        ],
      ),
      body: Stack(children: [
        Container(
          height: MediaQuery.of(context).size.height,
          width: MediaQuery.of(context).size.width,
          child: FutureBuilder(
            future: _future,
            builder: (context, AsyncSnapshot snapshot) {
              if (!snapshot.hasData) {
                return CircularProgressIndicator();
              }


              List<Routes> parsedJson = jsonDecode(snapshot.data);


              allMarkers = parsedJson.map((element) {

                element.coords.forEach((internalItem){
                  return Marker(
                    //here you need to create a random name.

                      markerId: MarkerId(internalItem.iD),
                      position: LatLng(internalItem.latitude, internalItem.longitude));
                });


              }).toList();

              return GoogleMap(
                initialCameraPosition: CameraPosition(
                    target: LatLng(-26.0000, 28.0000), zoom: 10.151926040649414),
                markers: Set.from(allMarkers),
                onMapCreated: mapCreated,
              );
            },
          ),
        ),
      ]),
    );
  }
  void mapCreated(controller) {
    setState(() {
      _controller = controller;
    });
  }
}
Set<Marker> allMarkers = {};