CLCircularRegion获得1英里范围内的随机点

时间:2014-10-01 13:58:56

标签: ios objective-c iphone cllocation clcircleregion

到目前为止,我已尝试生成随机纬度和经度,并使用“CLLocationCoordinate2DIsValid”验证它。但问题是我从未在指定的“CLCircularRegion”中获得坐标。以下是我写的逻辑:

    CLLocationCoordinate2D myCoordinates = { currentLocationLatitude, currentLocationLongitude };

    CLCircularRegion *myRegion = [[CLCircularRegion alloc] initWithCenter:myCoordinates radius:160934 identifier:@"myID"];


    for (int i=0; i< 15; i++) {

    double latitude = (arc4random()%20) + (myCoordinates.latitude);
    double longitude = (myCoordinates.longitude)  + arc4random()%10;

    CLLocationCoordinate2D randomCoordinate = CLLocationCoordinate2DMake(latitude, longitude);

        if(CLLocationCoordinate2DIsValid(randomCoordinate) != NO)
        {
            NSLog(@"randomCoordinate: %f  %f", randomCoordinate.latitude, randomCoordinate.longitude);
            if([myRegion containsCoordinate:randomCoordinate])
            {
                NSLog(@"Point contains inside your region.");
            }
        }

    }

此实现有什么问题,还是有其他方法可以找到随机点?

1 个答案:

答案 0 :(得分:2)

你的代码是对的。唯一的事情是,如果你为纬度增加+1,经度增加+1,你将获得138公里的距离,但你的半径是160公里。所以,基本上你只能添加+1到lat / long而不是10或20 ......或者你需要增加半径...使用link来检查距离:http://www.movable-type.co.uk/scripts/latlong.html