Я довольно новичок в Objective-c.Нанесение маршрута пользователей, сделанных на карте с использованием MKPolyline
В моем приложении я пытаюсь отобразить пользователей на маршруте.
Вот то, что я до сих пор, что только получает пользователи текущее местоположение:
#import "StartCycleViewController.h"
#import "CrumbPath.h"
@interface StartCycleViewController()
@property (nonatomic, strong) CLLocationManager *locationManager;
@property (nonatomic, strong) IBOutlet MKMapView *map;
@property (nonatomic, strong) UIView *containerView;
@end
@implementation StartCycleViewController
@synthesize cycleLocation = _cycleLocation;
@synthesize currentCycleLocation = _currentCycleLocation;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self startCycleLocation];
_containerView = [[UIView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.containerView];
[self.containerView addSubview:self.map];
// Do any additional setup after loading the view.
}
- (void)dealloc
{
self.locationManager.delegate = nil;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - startCycleLocation
- (void)startCycleLocation{
if (!_cycleLocation){
_cycleLocation = [[CLLocationManager alloc]init];
_cycleLocation.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
_cycleLocation.distanceFilter = 10;
_cycleLocation.delegate = self;
}
[_cycleLocation startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"didUpdateToLocation: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
self.longitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
self.latitudeLabel.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
}
}
- (void) locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"%@",error);
if ([error code] != kCLErrorLocationUnknown){
[self stopLocationManager];
}
}
- (void) stopLocationManager {
[self.cycleLocation stopUpdatingLocation];
}
@end
Я был осмотреться в Интернете и собрать, что я должен использовать MKPolyline
и дать ему координаты. Но я просто не уверен, как я буду хранить местоположения, а затем отправлю им использование MKPolyline
, чтобы нарисовать точки, непрерывно, пока приложение запущено.
Спасибо за ответ :) Извините, я все еще новичок во всем этом! Я внедрил код и получаю несколько ошибок, я уверен, что все это элементарно. Я попытался установить контроллер представления делегатом MKMapView с помощью [mapView setDelegate: self]; это правильно? – Khledon
Также я получаю следующие ошибки: @ self.location addObject «no visible @interface для NSArray объявляет sddObject» и @ self.mapview «не найден на объекте типа». Опять я уверен, что что-то очевидное я сделал неправильно! – Khledon
@ user3254994 Да, чтобы указать делегат для 'MKMapView', вы можете сделать это в коде, подобном этому (или вы можете сделать это в IB, перейдя в« Inspectors Connections »). Ошибка в отношении 'self.locations' заключается в том, что вы определили и/или создали его как« NSArray », а не как« NSMutableArray ». Используйте последний. – Rob