Обновление вида карты в приложении для iPhone

#iphone #objective-c #mkmapview #mkmapviewdelegate

#iPhone #objective-c #mkmapview #mkmapviewdelegate

Вопрос:

Я использую функциональность карты в своем приложении для iPhone. Я показываю магазины для текущего местоположения пользователей на карте. Всякий раз, когда пользователь прокручивает карту, ему нужно показывать магазины нового местоположения. например. предположим, что пользователь в
Нью-Йорке сначала приложение покажет магазины в Нью-Йорке, но когда он прокручивает карту до Техаса, тогда приложение должно запустить запрос веб-службы на местоположение в Техасе. Моя проблема в том

1) если запрос веб-службы отправляется при каждой прокрутке карты, приложение может аварийно завершать работу или каждый раз ожидать ответа для нового набора магазинов. (для этого я собираюсь ввести некоторый жестко заданный радиус для отправки запроса) Итак, как правильно с этим справиться. 2) Я хочу знать расстояние между двумя местоположениями, чтобы я мог отправить запрос на сервер, только если расстояние между 2 местоположениями больше некоторого определенного значения.

Я использую делегаты представления карты для вышеуказанных функций. Пожалуйста, предложите мне какой-нибудь правильный способ справиться с этим.

Спасибо

Ответ №1:

Ну, чтобы найти расстояние между 2 точками, я использую

 CLLocation *location1 = [[CLLocation alloc]initWithLatitude:[[dict valueForKey:@"lat"] doubleValue] longitude:[[dict valueForKey:@"lon"]doubleValue]]; 
float distance =[mUserCurrentLocation distanceFromLocation:location1]/1000;     
float distanceinMeters=[mUserCurrentLocation distanceFromLocation:location1];       NSString *distancestr= [NSString stringWithFormat:@"%.2f KM",distance];
  

Посмотрите, может ли это вам помочь.

Комментарии:

1. Используя вышеизложенное, я могу получить разницу .. но как обрабатывать запрос веб-службы, который будет получать вызов каждый раз при прокрутке?

2. если у вас есть 2 точки широты .. затем вычислите расстояние с помощью приведенной выше функции и поставьте какое-либо условие, скажем, для if (расстояние> 100), затем делайте все, что хотите…. с этим я могу вам помочь…..