我正在开发Android应用程序,我有一个地理点的纬度和经度,我想得到位于X米(北)和Y米(西)的地方的坐标。 GeoPoint没有实现这种功能,所以我必须找到一种方法来自己做...
我做了一些搜索,但我没有找到任何有趣的内容,你知道如何继续吗?
答案 0 :(得分:2)
整蛊,因为两个整体经度之间的距离取决于纬度,距离也取决于海拔......
为了简单起见,我会尝试猜测经度和纬度,并检查猜测和原点之间的距离。这更容易,因为两点之间的getting the distance已经完成。
从一个轴开始,并进行一种二分搜索,直到找到北方X米的位置。然后对另一个轴做同样的事情。
答案 1 :(得分:1)
使用以下方法,您将获得添加到原始位置的纬度和经度以进入最终位置。请记住,这只适用于相对较小的距离,因为它忽略了地球的曲率。
private static final float GAP_LAT_LON = 0.00005f; //aprox 5 meters
private float results[] = new float[1];
private PointF getGaps(Location initial, float distanceX, float distanceY, PointF gaps){
Location.distanceBetween(initial.getLatitude(), initial.getLongitude(), initial.getLatitude(), initial.getLongitude() + GAP_LAT_LON, results);
double factorX = GAP_LAT_LON / results[0];
Location.distanceBetween(initial.getLatitude(), initial.getLongitude(), initial.getLatitude() + GAP_LAT_LON, initial.getLongitude(), results);
double factorY = GAP_LAT_LON / results[0];
if(gaps == null)
gaps = new PointF();
gaps.set((float)(distanceX * factorX), (float)(distanceY * factorY));
return gaps;
}
//to use
private void teste(){
PointF gaps = null;
Location initial = new Location("");
initial.setLatitude(23.5);
initial.setLongitude(13.2);
//100 meters West/East and 300 meters North/South
getGaps(initial, 100, 300, gaps);
//gaps.x returns x offset to add/subtract to initial latitude
//gaps.y returns y offset to add/subtract to initial longitude
}
祝你好运