GeocodeData constructor
GeocodeData(})
Implementation
GeocodeData(
String inputString,
String featureNameHeader,
String stateHeader,
String latitudeHeader,
String longitudeHeader, {
this.numMarkers = 1,
String fieldDelimiter = defaultFieldDelimiter,
String textDelimiter = defaultTextDelimiter,
String eol = defaultEol,
}) {
var rowsAsListOfValues = const CsvToListConverter().convert(
inputString,
fieldDelimiter: fieldDelimiter,
textDelimiter: textDelimiter,
eol: eol,
shouldParseNumbers: false,
);
_featureNameHeaderSN =
rowsAsListOfValues[0].indexWhere((x) => x == featureNameHeader);
_stateHeaderSN = rowsAsListOfValues[0].indexWhere((x) => x == stateHeader);
_latitudeHeaderSN =
rowsAsListOfValues[0].indexWhere((x) => x == latitudeHeader);
_longitudeHeaderSN =
rowsAsListOfValues[0].indexWhere((x) => x == longitudeHeader);
if (_featureNameHeaderSN == -1 ||
_stateHeaderSN == -1 ||
_latitudeHeaderSN == -1 ||
_longitudeHeaderSN == -1) {
throw Exception('Some of header is not find in file');
}
var locations = rowsAsListOfValues
.sublist(1)
.map((model) => LocationData(
model[_featureNameHeaderSN],
model[_stateHeaderSN],
double.tryParse(model[_latitudeHeaderSN].toString()) ?? -1,
double.tryParse(model[_longitudeHeaderSN].toString()) ?? -1))
.map((model) => model.toJson())
.toList();
_kdTree = KDTree(locations, _distance, ['latitude', 'longitude']);
}