Опыт работы с MKMapView Rotation

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

На данный момент я планирую просто повернуть все представление с помощью CGAffineTransform, но я хотел знать, есть ли у кого-нибудь опыт вращения MKMapView.

  • Есть ли какие-нибудь подводные камни или "ошибки", с которыми вы столкнулись при добавлении ротации?
  • Есть ли более простой способ повернуть карту?
  • Если у меня есть наложение, будет ли метод convertCoordinate: toPointToView: работать таким же образом? Я бы предположил, что мне придется применить такое же преобразование к моему наложению, чтобы точки выровнялись, но, возможно, этот метод умнее этого.

Если есть что-то, что, по вашему мнению, может помочь, я бы хотел все это услышать.


Изменить: после долгих экспериментов я считаю, что буду использовать статические карты, которые я могу вращать и накладывать на себя, однако меня все равно будет интересовать любая информация о вращении MKMapView.


person jessecurry    schedule 05.10.2009    source источник


Ответы (4)


Это свежий пример вращения MKMapView с iPhone акселерометр. Надеюсь, это поможет.

person slatvick    schedule 17.11.2009

Я также планирую использовать в своем приложении повернутый MKMapView. Чтобы показать аннотации без вращения, я использую следующий код:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
    ...
    annotationView.transform = GAffineTransformInvert(mapView.transform);
    ...
}

Мне кажется, это работает.

person Vladimir    schedule 14.10.2009
comment
Спасибо за информацию, я так понимаю, преобразование annotationView влияет только на вращение? Эта позиция является функцией какого-то другого преобразования? - person jessecurry; 14.10.2009

Извините, что возродил законченную тему, но еще одна проблема: если вы измените размер карты так, чтобы она была достаточно большой, чтобы ее можно было поворачивать, чтобы она всегда покрывала весь экран, тогда вы в конечном итоге обрежете логотип Google в левом нижнем углу. . Это явно противоречит лицензии, по которой вы используете MapKit, и может быть основанием для отклонения приложения. На практике добавление статической версии логотипа Google в качестве UIImageView вверху кажется приемлемым для всех сторон.

person Tommy    schedule 25.11.2010
comment
Хорошая точка зрения. Фактически вы можете получить логотип Google из MKMapView. MKMapView имеет 2 подпредставления, одно из которых представляет собой UIImageView, которое содержит логотип. Я создал свой собственный UIImageView и установил для него свойство изображения такое же, как в MKMapView, и оно работает. Логотип Google отображается без вращения. - person Fraggle; 27.12.2010

Я начал работать с поворотами MKMapView и обнаружил, что:

  • Когда вы применяете CGAffineTransform к представлению карты, метод convertCoordinate: toPointToView: работает так же.
  • Аннотации вращаются вместе с видом, включая текст аннотации.
  • Подходящая область по-прежнему кажется подходящей для области на экране, она не подходит для вида карты (я сделал вид карты больше, чем его родительский вид, чтобы он мог вращаться, не показывая вид позади).
person jessecurry    schedule 06.10.2009