У меня есть коллекция документов в базе данных firestore. Вот один из документов:
В своем приложении я хочу показать полилинии на карте Google на основе точек в документе. Для полилинии требуются точки в виде списка широт и долгот, например:
points: <LatLng>[
LatLng(0, 0),
LatLng(1, 1),
],
Однако, если я получаю баллы от firestore, он получает баллы как List<dynamic>, а не List<LatLng>.
Это ошибка:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<LatLng>'
Мой вопрос: как я могу получить точки из моей базы данных Firestore в качестве List<LatLng> или как я могу написать LatLngs в базе данных, чтобы я мог строить полилинии на карте независимо от того, сколько точек есть в списке в базе данных.
Заранее спасибо!
Преобразуйте List<dynamic> в List<LatLng>, используя метод map.
Предполагая, что массив точек состоит только из объектов GeoPoint:
final db = FirebaseFirestore.instance;
await db.collection("your-collection-name").get().then((event) {
for (var doc in event.docs) {
final docData = doc.data();
List<dynamic> points = docData['points'];
final latlngPoints = points.map((e) => LatLng(e.latitude, e.longitude));
}
});