MapKit: как перенести точно такую ​​же проекцию в новый экземпляр с немного другой формой?

Хорошо, вот сделка:

У меня есть два вида: простой и расширенный. На iPad они поставляются с большим видом карты с маркером, который можно перемещать, чтобы указать положение.

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

Однако форма представления карты немного отличается для каждого из представлений. Это потому, что в расширенном поиске над картой больше информации.

Когда я открываю карту (это код из абстрактного суперкласса, поэтому его получают оба экземпляра), я устанавливаю регион и положение маркера, например:

[mapSearchView setRegion:[mapSearchView regionThatFits:[[BMLTAppDelegate getBMLTAppDelegate] searchMapRegion]]];
[myMarker setCoordinate:[[BMLTAppDelegate getBMLTAppDelegate] searchMapMarkerLoc]];

searchMapRegion и searchMapMarkerLoc являются статическими и отражают текущую отображаемую область карты и местоположение маркера (центр карты).

Вот проблема:

Поскольку карта имеет немного другую форму, всегда есть небольшая корректировка. Это может «отскакивать» назад и вперед, так что масштаб карты будет уменьшаться при каждом переключении, пока вы не посмотрите на весь мир.

Неважно, использую ли я regionThatFits или нет. То же самое происходит даже с этим кодом:

[mapSearchView setRegion:[[BMLTAppDelegate getBMLTAppDelegate] searchMapRegion]];
[myMarker setCoordinate:[[BMLTAppDelegate getBMLTAppDelegate] searchMapMarkerLoc]];

Все, что я хочу, это чтобы отображались точно такие же масштаб и центр. Меня не волнует, что расширенный вид немного обрезается.

Как мне получить $#@!! MapKit, чтобы перестать настраивать коэффициент масштабирования?


person Chris Marshall    schedule 22.04.2012    source источник


Ответы (1)


Просто к вашему сведению. Я решил эту проблему, создав собственный класс слоя модели, который поддерживает масштаб и центральную точку и используется несколькими MKMapView. Это работает довольно хорошо, но MapKit иногда очень немного настраивает масштаб, чтобы он соответствовал одному из его «фиксаторов».

person Chris Marshall    schedule 06.06.2012