Карты Google: Рисование маршрутов происхождения и назначения связаны - PullRequest
0 голосов
/ 30 октября 2018

Я рисую маршрут на карте Google, используя путевые точки. Все выглядит хорошо, кроме моего происхождения и назначения также связано. Я уверен, что мое происхождение и пункт назначения не совпадают.

Вот URL-адрес, сгенерированный после того, как я сгенерировал URL-адрес направления из списка широты / долготы.

https://maps.googleapis.com/maps/api/directions/json? & Происхождение = 26.8530478,75.78491989999999 & Назначения = 26.8804683,75.75850109999999 & Путевые точки = 26.8566917,75.7691974% 7C 26.868405,75.76440269999999% 7C 26.8762989,75.7664082 & Ключ = MY_API_KEY

А также присоединение выхода. Прямой линии от «1» до «5» не должно быть. Пожалуйста, помогите мне найти ошибку.

Спасибо.

ParserTask -

ArrayList<LatLng> points = new ArrayList<LatLng>();
    PolylineOptions lineOptions = new PolylineOptions();
   // LatLngBounds.Builder builder = new LatLngBounds.Builder();
    int color = ContextCompat.getColor(activity, R.color.black_overlay);
    if (null != result)
        for (int i = 0; i < result.size(); i++) {
            // Fetching i-th route
            List<HashMap<String, String>> path = result.get(i);
            // Fetching all the points in i-th route
            for (int j = 0; j < path.size(); j++) {
                HashMap<String, String> point = path.get(j);
                double lat = Double.parseDouble(point.get("lat"));
                double lng = Double.parseDouble(point.get("lng"));
                LatLng position = new LatLng(lat, lng);
                points.add(position);
                //builder.include(position);
            }
            lineOptions = new PolylineOptions().width(15).color(color).addAll(points).zIndex(6);
        }
    if (activity instanceof OnRoutesParsingCompletedCallBack) {
        ((OnRoutesParsingCompletedCallBack) activity).
                onRoutesParsingCompleted(lineOptions);
    }

Активность с объектом карты -

@Override
public void onRoutesParsingCompleted(PolylineOptions lineOptions) {//}, LatLngBounds.Builder builder) {
    if (lineOptions.getPoints().size() > 0) {
        googleMap.addPolyline(lineOptions);
    } else
        Toast.makeText(this, "There is something wrong. No routes to draw!", Toast.LENGTH_SHORT).show();

    mCurrLocationMarker.showInfoWindow();
    progressBar.setVisibility(GONE);
    googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLong, 13));
}

enter image description here

1 Ответ

0 голосов
/ 31 октября 2018

Я думаю, проблема в том, что вы добавляете все возможные маршруты к одной и той же полилинии. Итак, ломаная проходит по первому маршруту, затем «возвращается» к начальной точке и снова идет по второму маршруту. Вам либо нужно удалить циклы for, что приводит к результатам:

if (null != result)
    // Fetching 1st route
    List<HashMap<String, String>> path = result.get(0);
    // Fetching all the points in 1st route
    for (int j = 0; j < path.size(); j++) {
        HashMap<String, String> point = path.get(j);
        double lat = Double.parseDouble(point.get("lat"));
        double lng = Double.parseDouble(point.get("lng"));
        LatLng position = new LatLng(lat, lng);
        points.add(position);
        //builder.include(position);
    }
    lineOptions = new PolylineOptions().width(15).color(color).addAll(points).zIndex(6);
}

Или вы можете создать ломаную линию для каждого существующего маршрута.

...