Есть несколько способов сделать это.
Вы можете создать MKCoordinateRegion
, вычислив точку center
, и тогда span
- это абсолютная разница в градусах между углами.
Или вы можете создать MKMapRect
с помощью функции MapKit MKMapPointForCoordinate
. Чтобы получить origin
, определите северо-западную координату и конвертируйте ее в MKMapPoint
. Чтобы получить width
и height
, получите абсолютную разницу в mappoints между углами (преобразуйте углы из координат в MKMapPoint
s, используя сначала функцию).
Еще один быстрый способ - небольшой трюк с использованием функции MKMapRectUnion
. Создайте нулевой размер MKMapRect
из каждой координаты, а затем объедините два ряда в один большой прямоугольник, используя функцию:
MKMapPoint swPoint = MKMapPointForCoordinate(SWCoordinate);
MKMapRect swRect = MKMapRectMake(swPoint.x, swPoint.y, 0, 0);
MKMapPoint nePoint = MKMapPointForCoordinate(NECoordinate);
MKMapRect neRect = MKMapRectMake(nePoint.x, nePoint.y, 0, 0);
MKMapRect rect = MKMapRectUnion(swRect, neRect);
Помните, что вид карты по-прежнему будет выполнять свои собственные корректировки запрошенного вами прямоугольника на основе пропорций вида карты и требуемого масштаба. (Если вы хотите знать, каким будет этот скорректированный прямоугольник, вызовите метод mapRectThatFits:
представления карты.)