Как отслеживать и отображать друга в пределах указанного диапазона на MKMap в iOS

#ios #iphone

#iOS #iPhone

Вопрос:

Я хочу отобразить друга на карте, когда пользователь входит в приложение, ему нужно будет выбрать соответствующий диапазон (например, в пределах 5 км, 10 км или 10 выше).).

Если пользователь выбирает 5 км, то должны отображаться все друзья, которые находятся в пределах указанного диапазона.

Нужны рекомендации о том, как реализовать это с помощью MKMapView . Это некоторый код, который я использовал :

 -(void) 5KmRange
 {
     // code for 5 Km Range....
 }

 -(void) 10KmRange
 {
     // code for 10 Km Range....
 }

 -(void) 10AboveKmRange
 {
     // code for 10 above Km Range....
 }
  

Спасибо.

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

1. Вы должны найти ширину среди 5 км. А затем добавьте эти широты в свой вид карты.

Ответ №1:

Следующий код больше похож на представление о том, какие функции делегирования использовать:

 @property (assign, nonatomic) NSInteger radius;
@property (strong, nonatomic) MKPointAnnotation *currentAnnotation;


- (void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region{
    if(state == CLRegionStateUnknown){
        NSLog(@"Region Unknown");
    } else if(state == CLRegionStateInside){
        NSLog(@"Region Inside");
    } else if(state == CLRegionStateOutside ){
        NSLog(@"Region Outside");
    } else {
        NSLog(@"Region Mystery");
    }

}

- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
    self.currentAnnotation.coordinate = locations.lastObject.coordinate;
}


-(void) locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
    //Add annotation on Map
}


- (void) locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
    // Remove annotation
}



-(void) setUpNearbyRegion {
    MKPointAnnotation *referenceAnnotation = [[MKPointAnnotation alloc] init];
    referenceAnnotation.coordinate = CLLocationCoordinate2DMake(40.628647, 22.948567);
    referenceAnnotation.title=@"Your title”;
    self.nearbyArea = [[CLCircularRegion alloc] initWithCenter:referenceAnnotation.coordinate radius:self.radius identifier:@"ReferenceLocationIdentifier"];

    [self.mapView addAnnotation:companyAnnotation];
}


-(void) 5KmRange  // This should be invoked by an IBAction
{
    // code for 5 Km Range....
    self.radius = 5;
}

-(void) 10KmRange // This should be invoked by an IBAction
{
    // code for 10 Km Range....
    self.radius = 10;
}


-(void) 10KmRange // This should be invoked by an IBAction
{
    // code for 10 Km Range....
    self.radius = 10;