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