有没有一个简单的计算方法可以将km转换成一个值,我可以将这个值添加到lat或lon float中,以计算搜索的边界框?它不需要完全准确。
例如:如果我得到英国伦敦的纬度/经度(51.5001524,-0.1262362),我想计算从该点向东/向西25公里处的纬度,以及该点以北/向南25公里处的纬度,我需要做什么才能将25公里转换为小数,以添加上述值?
我正在寻找一个通用的经验法则,即:1 1km == +/- 0.XXX
编辑:
我最初搜索"lat lon“时没有返回这个结果:
How to calculate the bounding box for a given lat/lng location?
公认的答案似乎足以满足我的要求。
发布于 2009-08-10 07:32:49
近似转换为:
这对于地球的极地扁平化并不完全正确--因此,你可能需要一个使用WGS84参考椭球(用于全球定位系统的模型)的更复杂的公式。但对于您的目的来说,这个错误可能可以忽略不计。
来源:http://en.wikipedia.org/wiki/Latitude
Caution:请注意,latlong坐标是以度为单位表示的,而cos
函数在大多数情况下(全部?)语言通常接受弧度,因此需要一个degree to radians conversion。
发布于 2009-08-10 07:41:13
如果你使用的是Java、Javascript或PHP,那么有一个库可以精确地执行这些计算,使用一些非常复杂(但仍然很快)的三角函数:
发布于 2019-07-23 15:55:46
感谢Jim Lewis的精彩回答,我想通过我在Swift中的功能来说明这个解决方案:
func getRandomLocation(forLocation location: CLLocation, withOffsetKM offset: Double) -> CLLocation {
let latDistance = (Double(arc4random()) / Double(UInt32.max)) * offset * 2.0 - offset
let longDistanceMax = sqrt(offset * offset - latDistance * latDistance)
let longDistance = (Double(arc4random()) / Double(UInt32.max)) * longDistanceMax * 2.0 - longDistanceMax
let lat: CLLocationDegrees = location.coordinate.latitude + latDistance / 110.574
let lng: CLLocationDegrees = location.coordinate.longitude + longDistance / (111.320 * cos(lat / .pi / 180))
return CLLocation(latitude: lat, longitude: lng)
}
在此函数中,我使用以下公式来转换距离:
latDistance / 110.574
longDistance / (111.320 * cos(lat / .pi / 180))
https://stackoverflow.com/questions/1253499
复制相似问题