Как нарисовать альтернативные дороги на картах api - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь создать приложение, которое отслеживает пешеходный маршрут пользователя и получает доступ к GPS, чтобы узнать его местоположение. Затем я проведу полилинии между этими точками, чтобы показать маршрут. Как нарисовать альтернативные дороги, помогите, пожалуйста?

Это класс PointsParser

public class PointsParser extends AsyncTask<String, Integer, List<List<HashMap<String, String>>>> {
TaskLoadedCallback taskCallback;
String directionMode = "driving";

public PointsParser(Context mContext, String directionMode) {
    this.taskCallback = (TaskLoadedCallback) mContext;
    this.directionMode = directionMode;
}

// Parsing the data in non-ui thread
@Override
protected List<List<HashMap<String, String>>> doInBackground(String... jsonData) {

    JSONObject jObject;
    List<List<HashMap<String, String>>> routes = null;

    try {
        jObject = new JSONObject(jsonData[0]);
        Log.d("mylog", jsonData[0].toString());
        DataParser parser = new DataParser();
        Log.d("mylog", parser.toString());

        // Starts parsing data
        routes = parser.parse(jObject);
        Log.d("mylog", "Executing routes");
        Log.d("mylog", routes.toString());

    } catch (Exception e) {
        Log.d("mylog", e.toString());
        e.printStackTrace();
    }
    return routes;
}

// Executes in UI thread, after the parsing process
@Override
protected void onPostExecute(List<List<HashMap<String, String>>> result) {
    ArrayList<LatLng> points;
    PolylineOptions lineOptions = null;
    // Traversing through all the routes
    for (int i = 0; i < result.size(); i++) {
        points = new ArrayList<>();
        lineOptions = new PolylineOptions();
        // 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);
        }
        // Adding all the points in the route to LineOptions
        lineOptions.addAll(points);
        if (directionMode.equalsIgnoreCase("walking")) {
            lineOptions.width(10);
            lineOptions.color(Color.MAGENTA);
        } else {
            lineOptions.width(20);
            lineOptions.color(Color.BLUE);
        }
        Log.d("mylog", "onPostExecute lineoptions decoded");
    }

    // Drawing polyline in the Google Map for the i-th route
    if (lineOptions != null) {
        //mMap.addPolyline(lineOptions);
        taskCallback.onTaskDone(lineOptions);

    } else {
        Log.d("mylog", "without Polylines drawn");
    }
}

И я получаю URL вот так:

FetchURL(this@MapsActivity).execute(
            getUrl(
                mLocation,
                destination,
                "walking"
            ), "walking"
        )

Я добавил в метод getUrl альтернативу = true, но я не смог нарисовать альтернативу дороги, как я могу это исправить?

override fun onTaskDone(vararg values: Any?) {
    if (currentPolyline != null)
        currentPolyline!!.remove();
    currentPolyline = mMap.addPolyline( values[0]as PolylineOptions)


}

Я рисую вот так, но хочу добавить еще один маршрут к пункту назначения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...