Меньшие настройки никогда не приведут к изменению уровня масштабирования карты.Когда вы передаете регион, представление карты решает, какой уровень масштабирования использовать для наилучшего соответствия.Он никогда не будет использовать промежуточный уровень.Причина в том, что промежуточные уровни масштабирования выглядят нечеткими.Вы даете ему регион, который хотите показать, и он создает уровень масштабирования, который включает весь этот регион.Если вы зададите для * 1001 желаемый регион, то он вернет уровень, который он использует.
Если вы масштабируете карту с помощью щепотки, вы можете перейти на уровень между двумя уровнями масштабирования, но если дважды нажать(чтобы увеличить) или коснитесь двумя пальцами (чтобы уменьшить), вы увидите только «стандартные» уровни масштабирования.
Я говорю об уровнях масштабирования здесь, но на самом деле их нетв iOS так же, как они существуют в Google Maps.Существуют только регионы, если установить карту на определенном уровне.
С вашей проблемой наилучшего соответствия для выводов я обнаружил, что что-то изменилось в iOS 4, и код, который я использовал для размещения выводоввдруг дал слишком много места.Я разделил дельты на 3, и это снова сработало.Возможно, вы захотите заключить это в условное выражение, ориентированное только на iOS 4.
region.span.longitudeDelta = (maxCoord.longitude - minCoord.longitude) / 3.0;
region.span.latitudeDelta = (maxCoord.latitude - minCoord.latitude) / 3.0;
Глядя на свой код, вы используете * 0.9
, чтобы получить точно такую же вещь.
Один изСтранная вещь, которую я обнаружил, заключалась в том, что значение, возвращаемое regionThatFits:
, не всегда было областью, которую в конечном итоге установил вид карты.Это может быть ошибка, но это было там с iOS 4.0.Вы можете проверить это самостоятельно, зарегистрировав MKCoordinateRegion
из regionThatFits:
и сравнив его с регионом карты после увеличения.Кажется, я помню, что он появлялся на форумах разработчиков Apple.