我当前位置与折线Google Maps Api V2之间的距离

时间:2015-01-29 23:31:50

标签: android android-studio google-maps-android-api-2

我正在使用Android Studio>>我有一个起点和命运点。我使用Google Services中的JSONData绘制路线,然后创建折线。现在,我需要从地图中的折线监视用户的当前位置,但我不能。

这是我的代码:

private void drawRoute(List<LatLng> list) {
    if ((list != null) && (list.size() > 0)) {
        polylineOptions = new PolylineOptions()
                .addAll(list)
                .width(8);
        map.addPolyline(polylineOptions);

        CircleOptions circleOptions;
        for (int i = 0; i < polylineOptions.getPoints().size(); i++) {
            LatLng point = polylineOptions.getPoints().get(i);
            circleOptions = new CircleOptions()
                    .center(new LatLng(point.latitude, point.longitude))
                    .strokeColor(Color.TRANSPARENT)
                    .strokeWidth(1)
                    .fillColor(Color.argb(100, 164, 171, 167))
                    .radius(10);
            map.addCircle(circleOptions);
        }
    } else {
        Log.i("Msg", "No routes");
    }
}

我与此相距甚远:

private double getDistance(LatLng originPoint, LatLng destinyPoint) {
    try {
        Location origin = new Location("Origin point");
        origin.setLatitude(originPoint.latitude);
        origin.setLongitude(originPoint.longitude);
        Location destiny = new Location("Destiny point");
        destiny.setLatitude(destinyPoint.latitude);
        destiny.setLongitude(destinyPoint.longitude);
        return origin.distanceTo(destiny);
    } catch (Exception e) {
        Log.e("Msg", e.getMessage());
        return 0d;
    }
}

我不知道是否有办法在用户当前位置周围的圆圈中找到折线的“片段”,并计算该“片段”与当前位置之间的距离。我一直在搜索,但我找到的代码是在V3,我正在启动Android应用程序。感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

好吧,如果你需要它,我用这段代码解决它:

    @Override
    protected Boolean doInBackground(List<LatLng>... params) {
        publishProgress();
        List<LatLng> list = params[0];
        LatLng currentPosition = list.get(0);
        for (int i = 1; i < list.size(); i++) {
            if (obtenerDistancia(currentPosition, list.get(i)) <= 100) {
                return false;
            }
        }
        return true;
    }

其中list =当前位置+ polyline.getPoints()

list [0] =当前位置;

list [1],list [2] ...,list [n] =折线点。

我计算当前位置(列表[0])与折线中的每个点之间的距离(列表[1],列表[2] ...,列表[n]]。如果我发现至少有一个点是&lt; =离我当前位置100米,这意味着用户接近绘制的路线。

答案 1 :(得分:0)

您无需在用户当前位置找到“片段”。 你只需要解码JSL文件中的点并将所有LatLng放到一个列表中,然后使用我创建的类来检查它。 以下是我对您所拥有的Class和方法的相关主题的回答:https://stackoverflow.com/a/49904276/7548514