ios – 如何创建一个MKMapRect给定两个点,每个指定一个纬度和经度值?

我有一个自定义类来扩展NSObject并实现MKOverlay协议.因此,我需要实现一个MKMapRect协议的boundingMapRect属性.为了创建一个MKMapRect,我当然可以使用MKMapRectMake做一个.但是,我不知道如何使用这个数据创建一个MKMapRect,它是两点,每一个都由纬度和纬度指定. MKMapRectMake的文档状态:
MKMapRect MKMapRectMake(
    double x,double y,double width,double height
);

Parameters
x
    The point along the east-west axis of the map projection to use for the origin.
y
    The point along the north-south axis of the map projection to use for the origin.
width
    The width of the rectangle (measured using map points).
height
    The height of the rectangle (measured using map points).
Return Value
    A map rectangle with the specified values.

经纬度值我必须指出MKMapRect是:

24.7433195,-124.7844079
49.3457868,-66.9513812

因此,目标MKMapRect需要指定一个如下所示的区域:

所以,要重申一下,如何使用我的lat / lon值创建一个MKMapRect,我可以设置为MKOverlay协议的@property(非原子,只读)MKMapRect boundingMapRect属性?提前感谢您能够提供的任何帮助!谢谢!!

解决方法

这应该做到:
// these are your two lat/long coordinates
CLLocationCoordinate2D coordinate1 = CLLocationCoordinate2DMake(lat1,long1);
CLLocationCoordinate2D coordinate2 = CLLocationCoordinate2DMake(lat2,long2);

// convert them to MKMapPoint
MKMapPoint p1 = MKMapPointForCoordinate (coordinate1);
MKMapPoint p2 = MKMapPointForCoordinate (coordinate2);

// and make a MKMapRect using mins and spans
MKMapRect mapRect = MKMapRectMake(fmin(p1.x,p2.x),fmin(p1.y,p2.y),fabs(p1.x-p2.x),fabs(p1.y-p2.y));

这将使用两个x和y坐标中较小的坐标作为起始点,并计算宽度和高度两点之间的x / y跨度.

相关文章

背景 前端时间产品经理决定使用百度统计,使得 工程B 中原统计sdk-友盟统计,需要被去除。之前尝试去除...
结论: alloc负责分配内存和创建对象对应的isa指针; init只是返回alloc生成的对象。 所以alloc后,多次...
更新 如果UI愿意把启动图切割成n份,按一定约束在launchscreen.storyboard中进行排版,启动图效果会更好...
最近在看一本书《Effective OC 2.0》,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环。...
// // ViewController.m // paintCodeTestOC //gif // Created by LongMa on 2019/7/25. // #import &a...
背景介绍 一般情况下,出于省电、权限、合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但...