У меня есть CLLocationCoordinate2D
и некоторый радиус в метрах. Я хотел бы получить две ограничивающие координаты (вверху справа и внизу слева) области.
Координата центра с радиусом преобразуется в координаты ne и sw
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
Искал координаты внешнего квадрата, но думаю сам разберусь с вашим кодом. Спасибо!
- person Shmidt; 04.08.2014
Извините, я не понял последний комментарий. Я думаю, что проще всего рассчитать новый радиус как гипотенузу треугольника.
- person Shmidt; 04.08.2014
Вы хотели заменить
double distanceRadians = distanceKm / 6371.0;
из другого поста?
- person Shmidt; 04.08.2014
Ах да, это самый быстрый способ сделать это. Но если у вас есть время, вы можете просто добавить расстояние, рассчитанное в радианах, к центральной точке и настроить toLonRadians в диапазоне от -180 до +180.
- person Szu; 04.08.2014
В любом случае, я удалил этот комментарий, потому что вставил неверный расчет. Угол = расстояние в метрах / 6371000; // Радиус Земли = 6371 км
- person Szu; 04.08.2014