我有一个名为positionMarkers
的类型Map<String, dynamic>
列表,其中包含纬度和经度以及它们的ID,我想相应地映射到类型标记列表,即List<Marker>
。我需要positionMarkers
中的id和lat和lng分别进入MarkerId()
和LatLng()
。我很确定这可以通过使用循环来实现,但似乎不知道如何实现。如有任何帮助,不胜感激:
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
class MapMarkers with ChangeNotifier {
List<Map<String, dynamic>> positionMarkers = [
{
'id': 1,
'lat': 22.6434340,
'lng': 88.446740,
},
{
'id': 2,
'lat': 22.6435442,
'lng': 88.456742,
},
{
'id': 3,
'lat': 22.6436544,
'lng': 88.466744,
},
{
'id': 4,
'lat': 22.6437646,
'lng': 88.476746,
},
{'id': 5, 'lat': 22.6438748, 'lng': 88.486748}
];
final List<Marker> markers = [
Marker(
markerId: MarkerId(),
position: LatLng(),
infoWindow: InfoWindow(),
)
];
}
这是你想要的吗?
final List<Marker> markers = [];
void _createMarkers() {
for (int i = 0; i < positionMarkers.length; i++) {
markers.add(
Marker(
markerId: MarkerId(positionMarkers[i]['id']),
position: LatLng(positionMarkers[i]['lat'], positionMarkers[i]['lng']),
infoWindow: InfoWindow(
title: 'Marker ${positionMarkers[i]['id']}',
),
),
);
}
}
试试这个,
final List<Marker> markers = List.empty(growable: true);
for (var i in positionMarkers) {
// markerId is i["id]
// lat is i["lat"]
// lng is i["lng"]
markers.add(
Marker(
markerId: MarkerId(i["id"]),
position: LatLng(i["lat"], i["lng"]),
infoWindow: InfoWindow(),
),
);
}