Отображение направления курса синей пульсирующей точкой (текущее местоположение пользователя) без потери круга точности

У меня есть менеджер CLLocation, как показано ниже

myLocation = [[CLLocationManager alloc] init];
    myLocation.desiredAccuracy = kCLLocationAccuracyBestForNavigation ;
    myLocation.delegate=self;

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

if([CLLocationManager headingAvailable])
        [myLocation startUpdatingHeading];

и изменение заголовка извлекаются из следующего метода

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
    [mymap setTransform:CGAffineTransformMakeRotation(-1 * newHeading.trueHeading * 3.14159 / 180)];

}   

Я могу использовать эту информацию (newHeading.trueHeading) для поворота карты. Но как я могу показать сектор, который будет отображать направление с заданной или принудительной точностью, на синей точке (индикатор текущего местоположения пользователя). Я могу использовать собственное изображение для синей точки, но тогда он теряет светлый «круг точности». Есть ли способ получить ссылку на вид синих точек и изменить его, чтобы круг точности не терялся.

Также вращения аннотаций можно избежать с помощью отрицательного поворота, но когда карта вращается, «Заголовок» и «подзаголовок» аннотаций расширяются за пределы видимого экрана. Есть ли способ ограничить их просмотром карты.

Спасибо за любую помощь заранее


person alekhine    schedule 13.09.2011    source источник


Ответы (1)


Вы можете использовать этот проект в качестве руководства. Он вращает весь mapView, но вы можете экстраполировать его на свое представление.

РЕДАКТИРОВАТЬ: Если вы хотите настроить аннотацию userLocation, вам необходимо реализовать viewForAnnotation и проверить, является ли данная аннотация MKUserLocation, и вернуть настраиваемый annotationView, настроенный так, как вы хотите.

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        //Configure your custom view to point to the current heading and return it.

    }

}
person Youssef    schedule 13.09.2011
comment
Я могу повернуть карту в соответствии со значением, полученным из newlocation.trueheading, но все же я не могу изменить синюю точку (текущее местоположение пользователя), чтобы отобразить заголовок пользователя. Я отредактировал вопрос, чтобы показать внесенные мной изменения. - person alekhine; 13.09.2011