CLCircularRegion получает случайные точки в радиусе 1 мили

До сих пор я пытался генерировать случайные широту и долготу и проверять их с помощью "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 ответ

Ваш код правильный. Единственное, что, если вы добавите +1 к широте и +1 к долготе, вы получите расстояние 138 км, но ваш радиус составляет 160 км. Итак, в основном вы можете добавить только +1 к широте / длине, но не к 10 или 20... Или вам нужно увеличить радиус... используйте ссылку, чтобы проверить расстояния: http://www.movable-type.co.uk/scripts/latlong.html

Другие вопросы по тегам