1
到目前爲止,我嘗試生成隨機的經度和緯度並使用「CLLocationCoordinate2DIsValid」驗證它。但問題是我從來沒有得到我指定的「CLCircularRegion」內的座標。以下是邏輯,我寫:CLCircularRegion獲得1英里半徑範圍內的隨機點
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或-1,它會爲同一個當前位置再次生成相同的一組座標。這就是爲什麼我包含「arc4random()」,每次都會生成新值。但我需要一個更乾淨的解決方案。 – RoHaN 2014-10-02 08:24:07
可能你需要的方法獲得一個-1和1之間的隨機雙重加上經緯度,但不是隨機整數。 – kabarga 2014-10-02 08:39:18
嗯,我已經用這個更新了隨機緯度/經度邏輯:double latitude =((arc4random()%100)+(myCoordinates.latitude * 100))/ 100; double longitude =((myCoordinates.longitude * 100) - (arc4random()%100))/ 100; – RoHaN 2014-10-02 08:43:11