我正在寻找一些关于测试MKPolygon是否与MKCircle相交的指导。目前我正在使用:
if ([circle intersectsMapRect:[poly boundingMapRect]]) {
//they do intersect
}我发现这会返回不准确的结果--简单地说是b/c --它在我的圆圈周围画了一个矩形,从而给了我不应该这样做的交叉点。
搜索这个主题让我找到了乍得撒克逊多边形-多边形交汇项目。这可能是有用的,如果我可以将我的MKCircle转换成一个多边多边形--这是可能的,但最终我相信这是解决这个问题的全面方法。
在深入移植我自己的自定义几何射线测试算法实现之前,我最终想知道是否有一个我忽略的简单解决方案。
发布于 2013-09-09 17:03:12
为了在解决方案中获得一些实质性的内容,这里有一个有用的MKCircle扩展,我写了这个扩展,用来检查圆内是否有一个点(在这里是一个多边形点)。享受吧!
//MK环状+PointInCircle.h
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MKCircle (PointInCircle)
-(BOOL)coordInCircle:(CLLocationCoordinate2D)coord;
@end//MK环状+PointInCircle.m
#import "MKCircle+PointInCircle.h"
@implementation MKCircle (PointInCircle)
-(BOOL)coordInCircle:(CLLocationCoordinate2D)coord {
CLLocation *locFrom = [[CLLocation alloc] initWithLatitude:self.coordinate.latitude longitude:self.coordinate.longitude];
CLLocation *locTo = [[CLLocation alloc] initWithLatitude:coord.latitude longitude:coord.longitude];
double distance = [locFrom distanceFromLocation:locTo];
BOOL isInside = (distance <= self.radius);
return isInside;
}
@endhttps://stackoverflow.com/questions/18664152
复制相似问题