У меня есть изображение, которое показывает, какой путь на север на карте. Это изображение обновляется CoreLocation, если найден новый заголовок. Он также размещен в правильном месте, я использую следующий код:
locateMeView.transform = CGAffineTransformMakeRotation(([CoreLocationController sharedInstance].heading - 45) * M_PI / 180);
CGRect frame = locateMeView.frame;
CGPoint pos = [MapClass vectorForLocation:[CoreLocationController sharedInstance].location mapCenter:curLocation zoom:curZoom];
frame.origin.x = (int)(self.view.bounds.size.width/2 + pos.x - frame.size.width / 2);
frame.origin.y = (int)(self.view.bounds.size.height/2 + pos.y - frame.size.height / 2);
frame.size.width = 24;
frame.size.height = 24;
locateMeView.frame = frame;
CoreLocationController — это класс, в котором хранятся обновления обычного CoreLocation. MapClass преобразует координаты широты/долготы в координаты x/y на моей карте. Положение изображения правильное, но вращение вызывает странные эффекты. При 0 en M_PI изображение правильное, но между ними изображение растягивается, как будто его еще и вращают вокруг оси z, а при M_PI/2 и 3 * M_PI/2 оно вообще исчезает. Может кто-нибудь объяснить, что происходит и что я делаю неправильно?