我在一个 IOS 7 项目中工作,它包含一个位置检查(当前位置在给定的多边形中)。
我正在使用以下代码检查条件
创建了一个 MKPolygons 数组
for(MKPolygon *poly in self.polygonArray)
{
[self checkTheLocationIsInPolygon:currentLocation polygon:poly];
}
- (void)checkTheLocationIsInPolygon:(CLLocation*)aLocation polygon:(MKPolygon*)aPolygon
{
CLLocationCoordinate2D coordinate = {aLocation.coordinate.latitude, aLocation.coordinate.longitude};
MKMapPoint mapPoint = MKMapPointForCoordinate(coordinate);
CGMutablePathRef mpr = CGPathCreateMutable();
MKMapPoint *polygonPoints = aPolygon.points;
size_t nCount = aPolygon.pointCount;
for (int p = 0; p < nCount; p++)
{
MKMapPoint mp = polygonPoints[p];
if (p == 0)
CGPathMoveToPoint(mpr, NULL, mp.x, mp.y);
else
CGPathAddLineToPoint(mpr, NULL, mp.x, mp.y);
}
CGPoint mapPointAsCGP = CGPointMake(mapPoint.x, mapPoint.y);
BOOL pointIsInPolygon = CGPathContainsPoint(mpr, NULL, mapPointAsCGP, FALSE);
CGPathRelease(mpr);
if(pointIsInPolygon == YES)
{
//IN
}
else
{
//Out
}
}
对于第一个多边形,此代码正常工作(pointIsInPolygon 返回 YES/NO 正确)。然后下一次迭代(数组中的下一个多边形)pointIsInPolygon 给出前一个状态的意思,如果第一个多边形在该位置之外,它返回 NO 并且它返回 YES如果第一个多边形在 location 内。
如何解决这个问题?
如果有人知道,请给我一个建议