给定 GPS 的地理位置,如何在给定的 x 米半径内找到纬度和经度
Posted
技术标签:
【中文标题】给定 GPS 的地理位置,如何在给定的 x 米半径内找到纬度和经度【英文标题】:Given the geo location from the GPS, how to find the latitude and longitude within a given x meter radius 【发布时间】:2012-03-01 07:59:12 【问题描述】:我正在编写一个 android 应用程序,我想知道是否有任何 API 可以帮助插入从 GPS 获得的纬度和经度以及插入半径 R,以非常高的精度找到新的纬度和经度。最好是Java代码。 所以说例如当前位置是 curX 和 curY 现在这个位置200米半径内可以是maxX和maxY。因此,如果我有一个条目列表,我将只打印最大范围内的条目。因此,为了比较正确,精度应该很高。有没有可以做到这一点的API?有什么公式吗? (在 Java 中)
So the function is
findNewLatitude(curLat,curLong,oldList,radius)
do bla bla bla; //Find a newList with respect to current Geo points on MAP and considering the radius
output: newList such that distance between (lat,long) in newList and
(curLat,curLong) is equal to radius
【问题讨论】:
这是你想要的吗?在给定的位置集合 S 中找到给定位置 CURRENT 半径 R 内的位置 L,并在 L 中找到与当前位置距离最大的位置。 @Stefan 您的措辞部分正确。如,在给定位置 CURRENT 的半径 R 内找到 L。这就是我的主要目标。 好的,我猜 Gabriel Negut 的回答(见下文)解决了你的问题。 在这里查看我的答案:gis.stackexchange.com/a/21100/6020 【参考方案1】:试试这个:
Geocoder coder = new Geocoder(this);
List<Address> address;
try
address = coder.getFromLocationName(strAddress,5);
if (address == null)
return null;
Address location = address.get(0);
location.getLatitude();
location.getLongitude();
p1 = new GeoPoint((int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
return p1;
看到这个答案How to get city name from latitude and longitude coordinates in Google Maps?
How to change 1 meter to pixel distance?
【讨论】:
我不明白半径放在哪里。你假设的半径是 5 吗? 阅读文档,是最大结果数。【参考方案2】:我猜你正在寻找这种方法:
http://developer.android.com/reference/android/location/Location.html#distanceTo%28android.location.Location%29
这将计算两个给定位置之间的距离
【讨论】:
我不是在寻找距离。相反,我自己指定一个距离来找到纬度和对数的新值 在这种情况下,您还必须指定方向。【参考方案3】:List<Location> filter(Location current, List<Location> locations, int radius)
List<Location> results = new ArrayList<Location>();
for (Location loc : locations)
if (current.distanceTo(loc) <= radius)
results.add(loc);
return results;
【讨论】:
以上是关于给定 GPS 的地理位置,如何在给定的 x 米半径内找到纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章