Android:如何以纬度/经度位置为中心查找纬度和经度范围?
我有一个不同位置的数据集,希望显示最近的位置(5公里以内) 如何确定纬度和经度的最小值/最大值 f、 我需要给我的车加满油,我正在找附近所有的加油站,这样我就可以去最近的加油站了。如何在安卓手机上实现这一点 我也不想重复所有的位置,因为我有大约2500个位置,而且还在上升。有什么建议吗 提前感谢你们的建议 更新:Android:如何以纬度/经度位置为中心查找纬度和经度范围?,android,geolocation,Android,Geolocation,我有一个不同位置的数据集,希望显示最近的位置(5公里以内) 如何确定纬度和经度的最小值/最大值 f、 我需要给我的车加满油,我正在找附近所有的加油站,这样我就可以去最近的加油站了。如何在安卓手机上实现这一点 我也不想重复所有的位置,因为我有大约2500个位置,而且还在上升。有什么建议吗 提前感谢你们的建议 更新: 谢谢你们给我的反馈,我通过迭代服务器上的所有位置并使用谷歌距离矩阵API来计算距离,从而解决了我的问题:简化,纬度是赤道上方/下方的角度,经度是格林威治子午线的右/左角度 因此,要计算
谢谢你们给我的反馈,我通过迭代服务器上的所有位置并使用谷歌距离矩阵API来计算距离,从而解决了我的问题:简化,纬度是赤道上方/下方的角度,经度是格林威治子午线的右/左角度 因此,要计算(平均)纬度是多少,例如1º纬度,您将其转换为,然后乘以 对于您的问题,过程是相反的:走5公里,将其转换为度:
通过这种方式,你将得到delta度,也就是说,有多少度是5公里(平均来说,如果你想要精确,你将需要精确的地球半径差超过这5公里),你可以用它围绕给定的位置建立一个圆(就像.所有计算和方法都是近似值,但都在您要求的公差范围内 地球周长约为40076000米 每度纬度的旅行距离都是相同的,只是地球圈的一部分 然而,每度经度的旅行距离随纬度的不同而变化(地球仪上的光环越靠近两极越小) 因此,对于给定的距离m,对应的纬度和经度值为
earthcirc = 40076000;
// at Lat and Lon for distance m (in meters)
LatDelta = (m * 360) / earthcirc;
LonDelta = (m * 360) / abs(eathcirc*cos(lat));
这将为您提供方形lat-long delta,用于简单的数据搜索。但是在fingin上,你应该做一个完整的距离计算,因为广场的一角距离5公里多一点
两个横向/纵向之间的距离
distLat = (lat1-lat2) * earthcirc) / 360;
distLong = (long1-long2) * earthcirc * cos((lat1+lat2)/2) / 360;
dist = sqrt( sqr(distLat) + sqr(distLong) );
我知道大多数编译器/语言使用弧度来表示cos/sin函数,但很容易用度来解释
至于搜索数据,最简单的方法是按lat或long排序,然后可以进行二进制搜索,找到可能要检查的位置,而不是进行完整扫描。有更好的方法对数据进行排序(四叉树),但是对于2500个ish条目,我不想费心了,这里有两个问题,1)如何计算两对lat/lon之间的距离,2)如何找到距离给定点最短的点
不是精确的代码,但希望能有所帮助。有没有办法知道某个纬度的确切地球半径是多少?某种类型的站点或API?你指的是具体位置(lat/long)。实际上,这一差异只能是+-20公里,与6371公里相比,这一差异可以忽略不计(误差为+-0.003%)。无论如何,您可以检查GPS提供的高度参数,或者。谢谢!我用Google DistanceMatrix API解决了我的问题:很高兴它起作用了。记住选择对你有用的答案;)请注意,在一小圈纬度上移动不会提供最小和最大经度。看见