Как получить геоточки из Firebase Firestore как List<LatLng> для полилинии во Flutter?

У меня есть коллекция документов в базе данных 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 в базе данных, чтобы я мог строить полилинии на карте независимо от того, сколько точек есть в списке в базе данных.

Заранее спасибо!

Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
0
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Преобразуйте 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));
  }
});

Другие вопросы по теме