Android 获取所有屏幕坐标

Android 获取所有屏幕坐标,android,Android,假设我的当前点是lat=50.000,long=50.000,我想显示这些位置上的一些公交车站,但我的限制应该取决于缩放级别 到目前为止,为了实现这个目标,我找到了一个方法:如果a能占据左上角和右下角,那就是拉特朗格;我会在这些地点之间找到车站 你知道我该如何看待这些观点或对这种情况有什么不同的看法吗 提前感谢。如果你只是想用粗略的测量来采集一个合理的物体样本,那么横向/远距离就足够了。只需确保将纬度范围除以纬度的余弦即可得到经度范围,即。,∆长=∆纬度/共纬度。这是为了补偿接近极点时经线的收缩

假设我的当前点是lat=50.000,long=50.000,我想显示这些位置上的一些公交车站,但我的限制应该取决于缩放级别

到目前为止,为了实现这个目标,我找到了一个方法:如果a能占据左上角和右下角,那就是拉特朗格;我会在这些地点之间找到车站

你知道我该如何看待这些观点或对这种情况有什么不同的看法吗


提前感谢。

如果你只是想用粗略的测量来采集一个合理的物体样本,那么横向/远距离就足够了。只需确保将纬度范围除以纬度的余弦即可得到经度范围,即。,∆长=∆纬度/共纬度。这是为了补偿接近极点时经线的收缩。你用∆纬度是以纬度为基础的,因为在全球任何地方,纬度线之间的距离都是相同的


为了获得更精确的测量结果,有一些复杂的函数允许您从lat/long对计算大圆距离,但从概念上讲,将lat/long对转换为三维坐标并使用简单的毕达哥拉斯距离来近似大圆距离要容易得多。如果我的白板几何适合我,你可以使用2*r*acosd/2*r,其中r是地球的标称半径,以获得精确的大圆。但是如果你只想得到一个范围内的物体,你可以把公式颠倒过来,得到相当于大圆极限的毕达哥拉斯距离。这也可用于导出三维边界框以加快搜索速度。如果你的数据库支持R树,那你就笑了!SQLite支持R*树,但在默认构建中它们是禁用的,所以我不知道它们在Android上是否可用。如果你只是想粗略地测量一个合理的对象样本,那么lat/long distance就足够了。只需确保将纬度范围除以纬度的余弦即可得到经度范围,即。,∆长=∆纬度/共纬度。这是为了补偿接近极点时经线的收缩。你用∆纬度是以纬度为基础的,因为在全球任何地方,纬度线之间的距离都是相同的


为了获得更精确的测量结果,有一些复杂的函数允许您从lat/long对计算大圆距离,但从概念上讲,将lat/long对转换为三维坐标并使用简单的毕达哥拉斯距离来近似大圆距离要容易得多。如果我的白板几何适合我,你可以使用2*r*acosd/2*r,其中r是地球的标称半径,以获得精确的大圆。但是如果你只想得到一个范围内的物体,你可以把公式颠倒过来,得到相当于大圆极限的毕达哥拉斯距离。这也可用于导出三维边界框以加快搜索速度。如果你的数据库支持R树,那你就笑了!SQLite支持R*树,但它们在默认构建中被禁用,因此我不知道它们在Android上是否可用。使用

GeoPoint tlGpt; // Top left
GeoPoint brGpt; // Bottom right

tlGpt = mapView.getProjection().fromPixels(0, 0);
brGpt = mapView.getProjection().fromPixels(mapView.getWidth(), mapView.getHeight());

在地图上可以实际看到公交车站的任何缩放级别上,左上经度可以视为与左下经度相同,类似地,左下经度大约等于右下经度。这样你就可以把包围盒看成是矩形,而不是等腰梯形梯形,在英语中

< p>你可以很容易地用上下式获得上左和右下LAT/Lon坐标。
GeoPoint tlGpt; // Top left
GeoPoint brGpt; // Bottom right

tlGpt = mapView.getProjection().fromPixels(0, 0);
brGpt = mapView.getProjection().fromPixels(mapView.getWidth(), mapView.getHeight());
在地图上可以实际看到公交车站的任何缩放级别上,左上经度可以视为与左下经度相同,类似地,左下经度大约等于右下经度。因此,你可以把包围盒看作是矩形,而不是等边梯形梯形图。