У меня есть многоплатформенное приложение, которое извлекает текущее местоположение и использует его в цикле для расчета расстояния до каждого элемента. Он использует
wineriesView.ItemsSource = await App.WineryManager.GetWineries(seltyp,selval,selwrs);
для загрузки каждого элемента, который, помимо прочего, содержит широту и долготу. Это звонит
public Task<List<WineryItem>> GetWineries(string typ, string val, int wrs) { return restService.ReadWineries(typ,val,wrs); }
который затем вызывает
public async Task<List> ReadWineries(string typ, string val, int wrs)
{
var position = await Geolocation.GetLocationAsync();
var uri = new Uri(string.Format(Constants.WineriesUrl, "wineries_by_region.php?region=piedmont"));
var urio = new Uri(string.Format(Constants.OnlinesUrl, "onlines_by_id.php?id=12"));
Items = new List<WineryItem>();
OItems = new List<OnlineItem>();
...
var content = await response.Content.ReadAsStringAsync();
Records = JsonConvert.DeserializeObject<WineryRecords>(content);
Items = new List<WineryItem>();
foreach (var record in Records.records)
{
Location winePosition = new Location(Convert.ToDouble(record.Latitude), Convert.ToDouble(record.Longitude));
double dblDistance = Location.CalculateDistance(position, winePosition, DistanceUnits.Miles);
...
if (dblDistance > 0 && dblDistance < 1000)
{
item.intDistance = Convert.ToInt16(dblDistance);
item.strDistance = dblDistance.ToString("N0")+"Mi";
} else
{
item.intDistance = 0;
item.strDistance = "--";
}
Items.Add(item);
Когда ReadWineries выполняет весь показанный код, он возвращает только 10 элементов в список, тогда как он вернет весь список из 50+, если я прокомментирую геолокацию, местоположение и вычислю код расстояния. Как увеличить время ожидания для этой задачи, чтобы она возвращала все элементы, даже если это занимает больше времени? Я отлаживаю это на устройстве Android. Будет ли разница, если я буду использовать устройство iOS? В конце концов, его нужно будет запустить на обоих. Я пробовал установить точность при получении местоположения, но это не помогает. Кажется, что приложение зависает с каждым вызовом расчета расстояния. Любые идеи?