首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试MKCircle是否与MKPolygon相交

测试MKCircle是否与MKPolygon相交
EN

Stack Overflow用户
提问于 2013-09-06 18:19:51
回答 1查看 1.2K关注 0票数 4

我正在寻找一些关于测试MKPolygon是否与MKCircle相交的指导。目前我正在使用:

代码语言:javascript
复制
if ([circle intersectsMapRect:[poly boundingMapRect]]) {
                    //they do intersect
   }

我发现这会返回不准确的结果--简单地说是b/c --它在我的圆圈周围画了一个矩形,从而给了我不应该这样做的交叉点。

搜索这个主题让我找到了乍得撒克逊多边形-多边形交汇项目。这可能是有用的,如果我可以将我的MKCircle转换成一个多边多边形--这是可能的,但最终我相信这是解决这个问题的全面方法。

在深入移植我自己的自定义几何射线测试算法实现之前,我最终想知道是否有一个我忽略的简单解决方案。

EN

回答 1

Stack Overflow用户

发布于 2013-09-09 17:03:12

为了在解决方案中获得一些实质性的内容,这里有一个有用的MKCircle扩展,我写了这个扩展,用来检查圆内是否有一个点(在这里是一个多边形点)。享受吧!

//MK环状+PointInCircle.h

代码语言:javascript
复制
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface MKCircle (PointInCircle)

-(BOOL)coordInCircle:(CLLocationCoordinate2D)coord;

@end

//MK环状+PointInCircle.m

代码语言:javascript
复制
#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;
}

@end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18664152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档