2015-05-26 4 views
1

У меня есть PFGeoPoint в Parse, и есть serachView, где пользователь вводит радиус в милях. Таким образом, он вернет список пользователей, которые находятся в пределах радиуса расстояния.Как я могу получить пользователей в заданном радиусе расстояния с помощью PFGeoPoint

Я знаю, что мы можем получить расстояние от координат, но я не знаю, как получить всех пользователей там и проверить один за другим.

Пожалуйста, если кто-нибудь может мне что-то предложить, это будет большой помощью для меня, поскольку я новичок в iOS и Parse.

ответ

2

EDITED

Анализировать на самом деле есть простое решение, что:

int radiusInKilometers = 400; //Example 
PFGeoPoint * myGeoPoint = [PFUser currentUser][@"geoPoint"]; // Your geoPoint 

PFQuery *query = [PFUser query]; 
[query whereKey:@"geoPoint" nearGeoPoint:myGeoPoint withinKilometers:radiusInKilometers]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 

     NSLog(@"Successfully retrieved %d scores.", objects.count); 
     // Do something with the found objects 

     for (PFObject *object in objects) { 

      // DISTANCE 
      PFGeoPoint * geoPoint1 = [PFUser currentUser][@"geoPoint"]; 
      PFGeoPoint * geoPoint2 = userObject[@"geoPoint"]; 

      CLLocation *location1 = [[CLLocation alloc] 
           initWithLatitude:geoPoint1.latitude 
           longitude:geoPoint1.longitude]; 

      CLLocation *location2 = [[CLLocation alloc] 
           initWithLatitude:geoPoint2.latitude 
           longitude:geoPoint2.longitude]; 


      CLLocationDistance distance = [location1 distanceFromLocation:location2]; 

      // Print out the distance 
      NSLog(@"There's %d km between you and this user", distance); 
     } 

    } else { 
     // Details of the failure 
     NSLog(@"Error: %@ %@", error, [error userInfo]); 
    } 
}]; 

Вы можете изменить withinKilometers к withinMiles.

+0

спасибо за ваше предложение. У меня есть что спросить, будет ли он возвращать массив пользователей, находящихся в радиусе 400 км? – Sushrita

+0

Нет, не будет. Это запрос, а не объекты. Это больше похоже на описание того, что вы хотите использовать из базы данных. Вы можете прочитать больше: http://parse.com/docs/ios/guide#queries. Чтобы получить объекты (пользователи) из базы данных, вы можете использовать: '[query findObjectsInBackgroundWithBlock:^(объекты NSArray *, ошибка NSError *) {...}];' –

+0

, можете ли вы рассказать мне, как получить индивидуальное расстояние между currentUser и другими пользователями? – Sushrita