Как я могу получить минимальную и максимальную широту и долготу, используя текущее местоположение и радиус? - PullRequest
3 голосов
/ 18 июня 2010

Я хочу минимальную и максимальную широту и долготу, используя текущее местоположение. Предположим, что у меня есть область в 20 км, поэтому, используя эту широту и долготу, я хочу, чтобы максимальная широта и долгота, а также Минимальная широта и долгота также хотели, чтобы все значения широты и долготы находились между ними, поэтомуКак я могу получить его. Как я могу использовать радиус в нем. Пожалуйста, помогите мне. Заранее спасибо ...

Ответы [ 3 ]

6 голосов
/ 18 июня 2010

Вы можете вычислить его вручную ... Я не знаю, существует ли какой-либо другой способ, широта 1 ° = 69.047 миль, установленных законом = 60 морских миль = 111.12 километров

, поэтому для 20 километров это будет около 0.18широта Для долготы преобразование такое же, как и широта, за исключением того, что значение умножается на косинус широты.

Чтобы установить тот же диапазон на карте для отображения

newRegion.center=newLocation.coordinate;
    //  newRegion.span.latitudeDelta = (20*2)/111.12;   // For kilometers

    newRegion.span.latitudeDelta = (20*2)/60.0; // For Miles
    newRegion.span.longitudeDelta = ((20*2)/60.0) *(cos(newRegion.span.latitudeDelta)); // For Miles
    mapView.region = newRegion;

Будет установлено 20диапазон километров на отображаемой карте ...

, поэтому вы можете найти его по

, вы можете найти его по

minLattitude = currentLattitude - (RadiusInKm/111.12);
maxLattitude = currentLattitude + (RadiusInKm/111.12);

Для той же долготы, но умножить результат накосинус широты ...

0 голосов
/ 31 июля 2015

1) Макросы для преобразования градусов в радианы:

#define DEGREES_TO_RADIANS(degrees) (degrees / 180.0 * M_PI)

2) Макросы в raduis в км:

#define radiusInKM 5.00

3) Установите минимальные и максимальные значения широты, долготы

CLLocation *location;//your current location

1° latitude = 69.047 statute miles = 60 nautical miles = 111.12 kilometers

double minLat = location.coordinate.latitude - (radiusInKM/111.12);

double maxLat = location.coordinate.latitude + (radiusInKM/111.12);

double minLon = location.coordinate.longitude - (radiusInKM) / fabs(cos(DEGREES_TO_RADIANS(location.coordinate.longitude))*111.12);

double maxLon = location.coordinate.longitude + (radiusInKM) / fabs(cos(DEGREES_TO_RADIANS(location.coordinate.longitude))*111.12);
0 голосов
/ 31 июля 2015
  1. макросов для преобразования градусов в радианы

    определения DEGREES_TO_RADIANS (градусы) (градусы / 180,0 * M_PI)

  2. макросов в рад в КМ

    определить radiusInKM 5.00

  3. установить минимальные и максимальные значения широты, долготы

    CLLocation * location; // ваше текущее местоположение

    1 ° широта = 69.047 статутных миль = 60 морских миль = 111.12 километров

    double minLat = location.coordinate.latitude - (radiusInKM / 111.12);

    double maxLat = location.coordinate.latitude+ (radiusInKM / 111.12);

    double minLon = location.coordinate.longitude - (radiusInKM) / fabs (cos (DEGREES_TO_RADIANS (location.coordinate.longitude)) * * 111.12);

    doublemaxLon = location.coordinate.longitude + (radiusInKM) / fabs (cos (DEGREES_TO_RADIANS (location.coordinate.longitude)) * 111.12);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...