Координата центра с радиусом преобразуется в координаты ne и sw

У меня есть CLLocationCoordinate2D и некоторый радиус в метрах. Я хотел бы получить две ограничивающие координаты (вверху справа и внизу слева) области.


person Shmidt    schedule 04.08.2014    source источник
comment
Тригонометрия в связанном ответе может быть ненужной для вашего случая. Этот подход может быть проще.   -  person    schedule 04.08.2014


Ответы (1)


Если я правильно вас понял, вы хотите найти эти 2 красных квадрата:

введите здесь описание изображения

Благодаря коду, который вы можете найти здесь, реализация довольно проста:

    CLLocationCoordinate2D cc0 = coordinate;
    CLLocationCoordinate2D cc1 = [self coordinateFromCoord:cc0 atDistanceKm:circleRadius atBearingDegrees:45];
    CLLocationCoordinate2D cc2 = [self coordinateFromCoord:cc0 atDistanceKm:circleRadius atBearingDegrees:225];
    NSLog(@"%.5f,%.5f -> %.5f,%.5f AND %.5f, %.5f", cc0.latitude, cc0.longitude, cc1.latitude, cc1.longitude, cc2.latitude, cc2.longitude);
person Szu    schedule 04.08.2014
comment
Искал координаты внешнего квадрата, но думаю сам разберусь с вашим кодом. Спасибо! - person Shmidt; 04.08.2014
comment
Извините, я не понял последний комментарий. Я думаю, что проще всего рассчитать новый радиус как гипотенузу треугольника. - person Shmidt; 04.08.2014
comment
Вы хотели заменить double distanceRadians = distanceKm / 6371.0; из другого поста? - person Shmidt; 04.08.2014
comment
Ах да, это самый быстрый способ сделать это. Но если у вас есть время, вы можете просто добавить расстояние, рассчитанное в радианах, к центральной точке и настроить toLonRadians в диапазоне от -180 до +180. - person Szu; 04.08.2014
comment
В любом случае, я удалил этот комментарий, потому что вставил неверный расчет. Угол = расстояние в метрах / 6371000; // Радиус Земли = 6371 км - person Szu; 04.08.2014