Для китайских карт на iOS 6, похоже, MapKit выбирает поставщика карт на основе вашего местоположения, где находится устройство. Если вы находитесь в Китае, он будет использовать карты AutoNavi, а также использовать карты Apple по умолчанию. Чтобы усложнить ситуацию, карты AutoNavi, похоже, преобразуются так же, как карты Google на iOS 5, тогда как карты Apple по умолчанию не преобразуются.
Преобразованным я говорю о том, что все карты в Китае трансформируются, хотя это неверно. Скорее, некоторые карты в Китае трансформируются, а некоторые - нет.
Это преобразование затрудняет правильное размещение аннотаций на карте, так как карта обычно смещается примерно на 500 метров. Так как невозможно изменить преобразование фактической карты, решение состоит в том, чтобы применить к аннотации одно и то же смещение.
Существуют нетривиальные способы инвертировать преобразование, по крайней мере, для ограниченных областей. Проблема в iOS 6 - это знать, преобразуется ли карта в способный соответствующим образом компенсировать аннотации. На iOS 5 эта проблема не существовала, так как преобразованные карты использовались последовательно.
Карты Шанхая, приведенные ниже, иллюстрируют ситуацию (фактическое смещение преобразования не показано).
Итак, будет ли какой-нибудь способ узнать во время выполнения, используются ли трансформированные или нетранспортные карты Китая? Другие идеи для решения этой проблемы?
Изменить: Маршрутизация сетевого трафика через прокси-сервер в Китае меняет карту в симуляторе, поэтому выбор поставщика карты должен основываться на IP-адресе.