setMarkers method
void
setMarkers(
- List<Marker> markers, {
- bool resetHistory = false,
- bool merge = false,
})
Implementation
void setMarkers(
List<Marker> markers, {
bool resetHistory = false,
bool merge = false,
}) {
assert(() {
for (final m in markers) {
m.ensureHasKey();
}
return true;
}());
assert(
!(resetHistory && merge),
'setMarkers cannot reset history and merge at the same time.',
);
if (resetHistory) {
setItems(markers, resetHistory: true);
return;
}
if (merge) {
final currentByKey = {
for (final marker in current)
if (marker.key != null) marker.key!: marker,
};
final merged = [
for (final marker in markers)
if (marker.key case final key?)
switch (currentByKey[key]) {
final Marker currentMarker? =>
_mergeMarker(currentMarker, marker),
_ => marker,
}
else
marker,
];
setItems(merged, resetHistory: false);
return;
}
setItems(markers, resetHistory: false);
}