Xamarin.Forms: более быстрый способ отображения ближайших мест без вызова API? - PullRequest
0 голосов
/ 10 марта 2019

У меня есть простое приложение 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 и не получая фактическое расстояние.

...