2014-10-01 8 views
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."); 
      } 
     } 

    } 

임의의 점을 찾는 데는 이상이 있습니까?

답변

2

귀하의 코드가 맞습니다. 유일한 것은 위도에 +1을 더하고 경도에 +1을 추가하면 거리가 138 킬로미터이지만 반경은 160 킬로미터가됩니다. 그래서 기본적으로 위도/경도에 +1을 더할 수 있지만 10이나 20을 늘릴 수는 없습니다 ... 반경을 늘릴 필요가 있습니다 ... 거리를 확인하려면 링크를 사용하십시오 : http://www.movable-type.co.uk/scripts/latlong.html

+0

예,하지만 상수를 추가하는 경우 값은 매번 +1이나 -1처럼 동일한 현재 위치에 대해 동일한 좌표 세트를 다시 생성합니다. 그래서 저는 매번 새로운 값을 생성하기 위해 "arc4random()"을 포함 시켰습니다. 하지만 더 깨끗한 솔루션이 필요합니다. – RoHaN

+0

아마도 -1과 1 사이의 임의의 double을 lat/long으로 더하기 대신 무작위 int로 가져 오는 메서드가 필요합니다. – kabarga

+0

음, 위도/경도 논리를 임의의 값으로 갱신했습니다 : 이중 위도 = ((arc4random() % 100) + (myCoordinates.latitude * 100))/100; 이중 경도 = ((myCoordinates.longitude * 100) - (arc4random() % 100))/100; – RoHaN