我需要生成最小和最大纬度和经度值的边界框,这样我就可以返回给定半径内的地址。
下面有两个func<>来将我需要的范围+/-返回到lon lat坐标以建立边界框。但是我不认为数学是100%
我正在使用Haversine公式来生成我的距离计算,这似乎是准确的。我调查了Vincenty公式的距离,但是我的需求太过分了。
我的问题是我希望我的搜索结果与Haversine一样准确,因为I +/-到lon lat坐标的范围考虑了椭球曲率或地球。
好的,这是我的功能<>'s ...请注意我不是数学教授: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)
)
);