gpt4 book ai didi

ios - 如何在给定两个点的情况下创建 MKMapRect,每个点都指定纬度和经度值?

转载 作者:IT王子 更新时间:2023-10-29 07:52:24 26 4
gpt4 key购买 nike

我有一个自定义类,它扩展了 NSObject 并实现了 MKOverlay 协议(protocol)。因此,我需要实现协议(protocol)的 boundingMapRect 属性,它是一个 MKMapRect。要创建一个 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 因此需要指定一个看起来像这样的区域:The Target MKMapRect

因此,重申一下,我如何使用我的纬度/经度值创建一个 MKMapRect,我可以将其设置为 MKOverlay 协议(protocol)的 @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 跨度。

关于ios - 如何在给定两个点的情况下创建 MKMapRect,每个点都指定纬度和经度值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24024135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com