Ручная настройка фрейма MKOverlayView (или подпредставления) - PullRequest
4 голосов
/ 21 ноября 2011

У меня есть представление, которое я использую в качестве наложения на MKMapView (он использует OpenGL для рисования). Чтобы рисование было выполнено правильно, фрейм glView должен быть точно таким же, как фрейм mapView. У меня также не может быть вида сверху только на карте, потому что я хочу, чтобы над ней были другие аннотации и наложения.

Способ, которым я пытался это сделать, - создать MKOverlayView, который boundingMapRect = MKMapRectWorld. Затем я добавляю glView как подпредставление к overlayView и вручную устанавливаю glView.frame = mapView.frame. Проблема в том, что кадр glView использует другую систему координат, чем mapView.

Кадр mapView находится в координатах, которые вы ожидаете для стандартного вида (что-то вроде 0,0,320,250). Кажется, что кадр glView использует MKMapPoints в качестве своей базы координат.

Так что моя идея заключалась в том, чтобы сделать что-то подобное в моем подклассе MKOverlayView ...

glView.frame = [self rectForMapRect:[mapView visibleMapRect]];

Это дает мне прямоугольник в правильных координатах (что-то вроде 61612032.000000, 105586688.000000, 5275648.000000, 5685248.000000), но он не идеально выровнен по карте. Направление y выключено, и иногда зум также неправильный.

Так что мой вопрос будет таким.

  1. Есть ли способ просто установить кадр MKOverlayView (или одного из его подпредставлений), используя обычные экранные координаты?
  2. Или есть какой-то другой способ, которым я мог бы достичь того же, чего мне просто не хватает?

1 Ответ

3 голосов
/ 27 ноября 2011

Вы можете конвертировать cgpoint в mkmappoint, используя метод mkoverlay - (MKMapPoint)mapPointForPoint:(CGPoint)point

Я надеюсь, что это поможет вам

ИСТОЧНИК: http://developer.apple.com/library/ios/documentation/MapKit/Reference/MKOverlayView_class/Reference/Reference.html#//apple_ref/occ/instm/MKOverlayView/mapPointForPoint:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...