У меня есть простое приложение Xamarin.Forms
, которое отображает список ближайших магазинов Walmart на основе моего текущего местоположения .
Допустим, моя база данных SQL содержит более 200 строк; у каждого ряда есть координаты магазина Walmart в моем штате Техас.
Итак, моя первоначальная логика заключалась в том, чтобы определить расстояние между моим местоположением и всеми 200+ местоположениями Walmart, примерно так:
Datatable walmartTable = GetAllWalmarts();
string distanceUrl = "https://maps.google.com/maps/api/distancematrix/xml?origins=MyLocationX,MyLocationY&destinations={2},{3}&mode=driving";
List<Walmarts> walmartList=new List<Walmarts>();
foreach(DataRow row in walmartTable.Rows)
{
x_walmart = row["x];
y_walmart = row["y];
currentWalmartName = row["name"];
// Build distanceUrl variable with x_walmart & y_walmart
// Call distanceUrl API that returns "distance in miles"
// Add "distance in miles" to an array, something like this: list.add(currentWalmartName, x_walmart, y_walmart, "distance in miles");
// Go to the next Walmart store
}
Затем, как только walmartList
определит расстояние между моим местоположением и всеми 200+ Walmarts, я покажу в своих ListView
местоположениях с расстоянием менее 10 миль.
Итак, мой вопрос: как я могу ограничить количество вызовов API для Google Maps? Прямо сейчас мне нужно запросить Google Карты более 200 раз, а затем отобразить магазины, которые находятся в пределах указанного расстояния (т. Е. 10 миль).
Если мое текущее местоположение в Хьюстоне, штат Техас, составляет 12 Oaks Dr , то зачем мне искать местоположения всех магазинов в Техасе? Но я не знаю, как ограничить этот поиск, не вызывая API Карт Google и не получая фактическое расстояние.