Мне нужно создать ограничивающую рамку минимальных и максимальных значений широты и долготы, чтобы я мог возвращать адреса в пределах заданного радиуса.
У меня есть две функции ниже, чтобы вернуть диапазон, который мне нужен +/- к координатам долготы, чтобы установить ограничивающую рамку. Однако я не думаю, что математика на 100%
Я использую формулу Хаверсина для расчета расстояния, и, похоже, она работает точно. Я также исследовал формулу Винсенти для определения расстояния, но для моих нужд это было излишним.
Моя проблема в том, что я хотел бы, чтобы мои результаты поиска были такими же точными, как Хаверсин, в том смысле, что диапазон I +/- до долготных координат учитывает эллипсоидальную кривизну или землю.
Хорошо, вот мои функции ... обратите внимание, я не профессор математики: o)
static Func<double, int, double> GetLatitudeRange = (latitude, distance) => (180.0 / Math.PI) * (distance / EARTH_RADIUS_IN_KM);
static Func<double, double, int, double> GetLongitudeRange = (longitude, latitude, distance) =>
(
Math.Asin(
Math.Sin(distance / EARTH_RADIUS_IN_KM) / Math.Cos(latitude)
)
);