#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;