标记不会在 Flutter 中显示
Posted
技术标签:
【中文标题】标记不会在 Flutter 中显示【英文标题】:Marker won't be displayed in Flutter 【发布时间】:2021-02-09 23:01:17 【问题描述】:我对颤动的世界有点陌生,我正在尝试根据我的 firebase 数据库中的一些值在我的地图中显示一组标记。但到目前为止标记不会出现,有时在热重载后会出现标记,但它与我在数据库中的内容相去甚远。有人可以帮助我吗,我几乎尝试了所有方法。 代码如下:
class Routes extends StatefulWidget
static const routeName = '/routes';
@override
State<StatefulWidget> createState() => new _RoutesState();
class _RoutesState extends State <Routes>
GoogleMapController _controller;
Set <Marker> _markers =;
void _onMapCreated(GoogleMapController controller)
setState(()
_controller = controller;
retrieveData();
);
void iniState()
super.initState();
setState(()
retrieveData();
);
retrieveData()
setState(() async
await Firebase.initializeApp();
final firestoreInstance = FirebaseFirestore.instance;
String place;
double rlat,rlong,speed;
String emailUser = FirebaseAuth.instance.currentUser.email;
firestoreInstance.collection('Cars').where('email', isEqualTo : emailUser).get().then((value)
value.docs.forEach((result)
print(result.data());
place = result.data()['place'] ;
rlat = double.parse(result.data()['rlat']);
rlong = double.parse(result.data()['rlong']);
_markers.add(
Marker(
markerId: MarkerId('Details'),
position: LatLng(rlat,rlong),
)
);
);
);
);
Widget build(BuildContext context)
return Scaffold(
appBar: new AppBar(
title: new Text('Track Route',
style: new TextStyle(color:Colors.white, fontWeight:FontWeight.bold),
),
leading: IconButton(
icon: Icon(Icons.arrow_back,
color: Colors.white),
onPressed: ()
Navigator.of(context).popAndPushNamed(RootPage.routeName);
,
),
),
body: Stack(
children: <Widget>[
GoogleMap(
onMapCreated:_onMapCreated,
initialCameraPosition: CameraPosition(target: LatLng(0,0),zoom:4) ,
markers: _markers,
)
],
) ,
);
【问题讨论】:
【参考方案1】:更改此行会发生什么:
_markers.add(
Marker(
markerId: MarkerId('Details'),
position: LatLng(rlat,rlong),
)
);
到这里:
setState(()
_markers.add(
Marker(
markerId: MarkerId('Details'),
position: LatLng(rlat,rlong),
)
);
);
【讨论】:
它有效,但它一直只显示一个标记,我想显示所有。你能再帮我一次吗? @LuthermillaMuculadosReis 在你的 for 循环之前print("$value.docs.length");
显示了什么?
@LuthermillaMuculadosReis 将 foreach 更改为一个简单的 for 循环。并检查 rlat
和 rlong
的值是否正确,因为标记不适用于无效的 LatLng 值。
我刚刚发现了问题,我没有意识到,但是标记得到了相同的 ID,所以它只显示最后一个,在更改所有标记后显示。感谢您的帮助和关注以上是关于标记不会在 Flutter 中显示的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:如何在 google_maps_flutter 中为标记图标设置动画?
Flutter - 使用 StreamBuilder 提供对谷歌地图的实时更新
Flutter:在用户输入时显示标记信息窗口抛出 PlatformException