gpt4 book ai didi

iphone - 如何在不使用 MKMapView 的情况下检查 MKCoordinateRegion 是否包含 CLLocationCoordinate2D?

转载 作者:IT王子 更新时间:2023-10-29 08:09:57 27 4
gpt4 key购买 nike

我需要检查用户位置是否属于 MKCoordinateRegion。我很惊讶没有为此找到简单的函数,类似于:CGRectContainsCGPoint(rect, point)

我找到了以下代码:

CLLocationCoordinate2D topLeftCoordinate = 
CLLocationCoordinate2DMake(region.center.latitude
+ (region.span.latitudeDelta/2.0),
region.center.longitude
- (region.span.longitudeDelta/2.0));


CLLocationCoordinate2D bottomRightCoordinate =
CLLocationCoordinate2DMake(region.center.latitude
- (region.span.latitudeDelta/2.0),
region.center.longitude
+ (region.span.longitudeDelta/2.0));

if (location.latitude < topLeftCoordinate.latitude || location.latitude > bottomRightCoordinate.latitude || location.longitude < bottomRightCoordinate.longitude || location.longitude > bottomRightCoordinate.longitude) {

// Coordinate fits into the region

}

但是,我不确定它是否准确,因为文档没有具体说明区域矩形是如何计算的。

必须有更简单的方法来做到这一点。我是否忽略了 MapKit 框架文档中的某些功能?

最佳答案

我发布此答案是因为我认为已接受的解决方案无效。这个答案也不完美,但它处理了坐标环绕 360 度边界的情况,这足以适合我的情况。

+ (BOOL)coordinate:(CLLocationCoordinate2D)coord inRegion:(MKCoordinateRegion)region
{
CLLocationCoordinate2D center = region.center;
MKCoordinateSpan span = region.span;

BOOL result = YES;
result &= cos((center.latitude - coord.latitude)*M_PI/180.0) > cos(span.latitudeDelta/2.0*M_PI/180.0);
result &= cos((center.longitude - coord.longitude)*M_PI/180.0) > cos(span.longitudeDelta/2.0*M_PI/180.0);
return result;
}

关于iphone - 如何在不使用 MKMapView 的情况下检查 MKCoordinateRegion 是否包含 CLLocationCoordinate2D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10553072/

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