2016-11-02 3 views
4

Мое требование - создать приложение, отображающее прямое слежение за кабиной. Как известные автомобильные приложения, такие как Ola, uber и так далее.MKMapview отслеживание живого автомобиля

Пожалуйста, дайте мне знать, как обновить аннотацию, даже для поворота улицы и обратного хода автомобиля. Как смоделировать движущуюся аннотацию с использованием MKMapview. любую библиотеку, которую я должен использовать. Я искал, но я не нашел ни одной библиотеки

+0

я рекомендовал использовать Google Maps SDK для лучшего решения об этом – Himanth

+0

@himanth, как вы это говорите? , Будет ли яблоко одобрять, если я использую google SK для карт – Vinodh

+0

Да, конечно, яблоко одобрит его – Himanth

ответ

3

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

для плавного поворота вы можете использовать CMMotionManager, поскольку он дает вам ускорение, поэтому вы можете поворачивать изображение, используя ссылку аннотации. Вы можете обновить данные ускорения, используя данные об ошибках обновления. Как вы получаете useracceleration вдоль х, у и г вы можете получить угол на загар function.This должен решить вашу проблему

код для получения угла

[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { 
    double angle = atan(motion.userAcceleration.x/motion.userAcceleration.y); 
}]; 
+0

Можете ли вы дать мне пример кода? – Vinodh

+1

[motionManager startDeviceMotionUpdatesToQueue: [NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion * motion, ошибка NSError *) { double angle = atan (motion.userAcceleration.x/motion.userAcceleration.y); }]; – santhosh

+0

, поскольку вы получаете угол, который вы можете вращать, используя центр nsnotification или поддерживая аннотацию – santhosh

2

Решение этой проблемы довольно тривиально. Если у вас возникла проблема с реализацией этой библиотеки, почему бы не сделать это самостоятельно и не научиться чему-то? Вы просто создаете некоторый тип класса модели автомобиля, в котором хранятся координаты и предыдущая координата. Чтобы иметь возможность отображать его на карте, он должен придерживаться протокола MKAnnotation - реализовать: название, субтитры и координаты. Позиция NewCoordinate будет установлена ​​по умолчанию при получении данных о местоположении из сети. Вам нужно отслеживать два значения для успешной анимации.

и таким образом реализовать что-то вроде этого:

@interface Vehicle : NSObject <MKAnnotation> 

@property (nonatomic, readonly, copy) NSString *title; 
@property (nonatomic, readonly, copy) NSString *subtitle; 

@property (nonatomic, assign) CLLocationCoordinate2D coordinate; 
@property (nonatomic, assign) CLLocationCoordinate2D newCoordinate; 

@end 

После установки newCoordinate вы двигаетесь предыдущее значение из пользовательского сеттер в собственность координат. Как только вы это сделаете, вы просто будете анимировать аннотацию, как обычно.

// new coordinate obtained from networking 
- (void)setNewCoordinate:(CLLocationCoordinate2D)newCoordinate { 

    // implement the value moving part 

    _newCoordinate = newCoordinate; 
} 

Но будьте осторожны при обнаружении кранов в анимационной аннотации из-за способа ее работы. Рамка аннотации будет установлена, когда анимация начнет отсчитывать значение готового кадра. Вам нужно будет использовать hitTest на презентационном слое аннотации, которая будет отображаться на экране во время анимации.

Для обработки отводы переопределять

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
} 

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
} 

одушевленные с

[UIView animateWithDuration:0 
         delay:0 
        options:UIViewAnimationOptionCurveEaseIn 
       animations:^{ 

} completion:nil]; 

Я извиняюсь, но я не могу отправить код здесь, так как я уже реализовано это для моего работодателя и я связан контрактом ,

+0

Прохладный спасибо. Пожалуйста, дайте мне возможность обновить плавный ход анимации аннотации. Вы сказали мне, что я должен переопределить в прикосновениях и начать тест. Просто дайте мне знать, что я должен сделать в этом 2 методах. – Vinodh

Смежные вопросы