-2

我有两个地理点

GeoPoint gp1; 
GeoPoint gp2;

我在这两个地理点之间也有距离。截至目前,它是174公里。我需要这两个地理点之间的准确中间地理点,所以我怎样才能获得中间地理点。

以上两个 GeoPoint 是 Route Draw 的一部分,它不是笔直的,所以我需要绘制路线的中间点而不是直线

我的代码:

List<GeoPoint> _geopoints = decodePoly(_path);
GeoPoint gp1; 
GeoPoint gp2; 
gp2 = _geopoints.get(0);
System.out.println("gp2 "+gp2);                                           
System.out.println("_geopoints"+_geopoints.size());
System.out.println("_midgeopoint"+_geopoints.size()/2);       
mGeoPointMiddleOne=_geopoints.get(_geopoints.size()/2);


private List<GeoPoint> decodePoly(String encoded) {

        List<GeoPoint> poly = new ArrayList<GeoPoint>();
        int index = 0, len = encoded.length();
        int lat = 0, lng = 0;

        while (index < len) {
            int b, shift = 0, result = 0;
            do {
                b = encoded.charAt(index++) - 63;
                result |= (b & 0x1f) << shift;
                shift += 5;
            } while (b >= 0x20);
            int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
            lat += dlat;

            shift = 0;
            result = 0;
            do {
                b = encoded.charAt(index++) - 63;
                result |= (b & 0x1f) << shift;
                shift += 5;
            } while (b >= 0x20);
            int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
            lng += dlng;

            GeoPoint p = new GeoPoint((int) (((double) lat / 1E5) * 1E6),
                    (int) (((double) lng / 1E5) * 1E6));
            poly.add(p);
        }

        return poly;
    }

上面的函数 decoePoly(path) 负责在两个地理点之间绘制路线,所以我得到了两点之间的路线。

我还通过调用谷歌地图API来绘制这两个地理点之间的距离,如下图

http://maps.googleapis.com/maps/api/directions/xml?  origin=52.31,16.71&destination=51.27,6.75&sensor=false

所以我从网络服务中的标签中得到两点之间的距离

所以我的要求是如何从这条路线获得中距离值的经纬度?

4

2 回答 2

0

如果您有两个 GeoPoint,我认为距离值不是必需的。解析几何说,如果你知道两点的坐标,你就可以简单地计算出中间点。

如果您有不是直线的特定路线。

看到这个页面:

在此处输入图像描述

于 2013-03-10T14:16:26.083 回答
0

您正在寻找的是“坐标几何”,而您正在寻找“直线方程”。

在这里,互联网上的一个有趣的链接。

于 2013-03-10T14:13:35.370 回答