#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);
},
)