Показывать несколько маркеров на картах Google

#google-maps #flutter #dart

#google-карты #flutter #дротик

Вопрос:

Я пытаюсь создать несколько маркеров для карт Google. Я начал с Set<Marker> markers = Set(); , затем сделал цикл по списку и добавил маркеры в markers

 Marker resultMarker = Marker(
            markerId: MarkerId(currentLocation.id),
            infoWindow: InfoWindow(title: "${currentLocation.title}", snippet: "$snippet"),
            position: LatLng(currentLocation.coordinates[1], currentLocation.coordinates[0]),
          );

markers.add(resultMarker);
  

Затем я попытался вернуть виджет:

 GoogleMap(
          initialCameraPosition: CameraPosition(target: _cameraPosition, zoom: 11.0),
          onMapCreated: (controller) => mapController = controller,
          myLocationButtonEnabled: false,
          markers: markers,
);
  

Но я получаю только первый маркер, а не все из них. Как я могу получить все маркеры?

Комментарии:

1. Вы уверены, что markers.length их больше одного?

2. @P4yam Юпс. Это 3

3. Просто полный снимок в темноте, но если значения по какой-либо причине асинхронны и все они находятся в текущем местоположении, вполне возможно, что все они обновляются до самого последнего текущего местоположения. Это означало бы, что они могут отображаться, но находятся просто друг над другом. Я не могу сказать, добавляете ли вы три результирующих маркера в список маркеров или у вас есть два предопределенных маркера.

Ответ №1:

Это сработало для меня:

 List<Marker> markers = <Marker>[];
  

и внутри вашего цикла:

     markers.add(
      Marker(
        markerId: MarkerId(currentLocation.id),
        infoWindow: InfoWindow(title: "${currentLocation.title}", snippet: "$snippet"),
        position: LatLng(currentLocation.coordinates[1], currentLocation.coordinates[0]),

     )
   );
  

убедитесь, что данные маркеров верны, поскольку карта Google не отображает маркеры с недопустимыми LatLng (попробуйте протестировать с фиктивными данными)

и затем

 GoogleMap(
      initialCameraPosition: CameraPosition(
        target: LatLng(38.9647,35.2233),
        zoom: 9.0,
      ),
      mapType: MapType.normal,
      markers: Set<Marker>.of(_markers),
      onMapCreated: (GoogleMapController controller) {
        _controller.complete(controller);
      },
    )