searchAddress method
Stream<List<GmhAddressData> >
searchAddress({
- required String text,
- required GmhSearchParams params,
Get list of addresses based on text query
Implementation
Stream<List<GmhAddressData>> searchAddress({
required String text,
required GmhSearchParams params,
}) async* {
if (text.trim().isEmpty) {
yield [];
return;
}
var r1 = await _textSearch(text.trim(), params);
yield r1;
if (params.searchNearby) {
final List<GmhAddressData> r2 = [...r1];
for (int i = 0; i < r1.length; i++) {
if (r1[i].types.contains('postal_code')) {
r2.addAll(await _searchNearby(params.apiKey, r1[i]));
}
}
yield r2;
r1 = r2;
}
if (params.loc == null || params.directionsKey == null || r1.length <= 5) {
return;
}
final List<GmhAddressData> r3 = [];
for (int i = 0; i < r1.length; i++) {
final distance = await _getDistance(
params.directionsKey!,
params.loc!,
LatLng(r1[i].lat, r1[i].lng),
);
r3.add(r1[i].setDistance(distance));
}
r3.sort(
(a, b) => (a.distance ?? 10e10).compareTo(b.distance ?? 10e10),
);
yield r3;
}