Как я могу ограничить действия пользователей в зависимости от их близости к фиксированной точке в iOS?

Думаю, то, что я пытаюсь сделать, должно быть простым, но я не знаю, как это искать!

Я хочу сделать следующее: пользователь проголосует за музыку, но пользователь может проголосовать только в том случае, если он находится в 2 км от фиксированного местоположения (широта, долгота).

Не могли бы вы предложить какие-нибудь ссылки, которые помогут мне это реализовать ?!

Ваше здоровье.


person Arthur Neves    schedule 19.05.2011    source источник
comment
2кл? 2 килограмма? Это много выпивки только для того, чтобы проголосовать ...   -  person Marc B    schedule 19.05.2011


Ответы (1)


Что-то вроде этого...

@interface YourLocationViewController : UIViewController <CLLocationManagerDelegate> 
CLLocationManager *locationManager;

...

/**
 * Start tracking updates for location. 
 * Call this from viewLoad or something.
 */
-(void) trackUpdates {

    self.locationManager = [[[CLLocationManager alloc] init] autorelease];
    self.locationManager.delegate = self;

    /* Pinpoint our location with the following accuracy:
     *
     *     kCLLocationAccuracyBestForNavigation  highest + sensor data
     *     kCLLocationAccuracyBest               highest     
     *     kCLLocationAccuracyNearestTenMeters   10 meters   
     *     kCLLocationAccuracyHundredMeters      100 meters
     *     kCLLocationAccuracyKilometer          1000 meters 
     *     kCLLocationAccuracyThreeKilometers    3000 meters
     */
    self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;

    /* Notify changes when device has moved x meters.
     * Default value is kCLDistanceFilterNone: all movements are reported.
     */
    self.locationManager.distanceFilter = 10.0f;

    // update location
    if ([CLLocationManager locationServicesEnabled]){
        [self.locationManager startUpdatingLocation];
    }
}

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {
    CLLocationDistance meters = [newLocation distanceFromLocation:fixedPoint];
    if (meters>2000){
        // drink a shot
    }
}
person Jano    schedule 19.05.2011
comment
классное решение! только что реализовано прямо сейчас, но я не знаю, почему не запускается основная локация ?! какой-то трюк не хватает ?! - person Arthur Neves; 24.05.2011
comment
хорошо, вот оно: pastebin.com/kmwcdJu5, он даже не получает точку журнала locationManager! - person Arthur Neves; 24.05.2011
comment
Обратите внимание, что вы создаете locationManager с автоматическим выпуском, поэтому экземпляр теряется, как только вы выйдете из метода. Может быть, вам стоит добавить его как переменную класса. - person Jano; 24.05.2011