Привет, ребята, я работаю над Google maps Реализация.Проложить маршрут по значениям Lat и Long
Я пытаюсь рисовать путь через google mapss.I есть кнопка для запуска и остановки GPS, в основном для получения значений Lat и Long.
Например: я могу получить 10 значений lat и long и хранить их в ArrayList.
Теперь я пытаюсь нарисовать путь с указанным выше списком lat и long. Если я использую API карт Google, тогда мне нужно отправить только начальную и конечную точки моего ArrayList, а затем он рисует/отображает на карте , но это не так, как я хотел.
Я хотел нарисовать путь по списку значений lat и long (10 значений). Причина заключается в том, что Google просто дает нам путь от начала до конца, но это может быть не путь/маршрут, в котором пользователь имеет путешествовал.
Как мы можем это сделать?
Ниже то, что я делаю:
private String getMapsApiDirectionsUrl(LatLng source, LatLng destination, String mode) {
// Origin of route
String str_origin = "origin=" + source.latitude + "," + source.longitude;
// Destination of route
String str_dest = "destination=" + destination.latitude + "," + destination.longitude;
// Sensor enabled
String sensor = "sensor=false";
// Building the parameters to the web service
String parameters = str_origin + "&" + str_dest + "&" + sensor + "&" + mode + "&alternatives=true";
// Output format
String output = "json";
// Building the url to the web service
String url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + parameters;
Log.e(TAG, " " + url);
return url;
}
private class ReadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... url) {
String data = "";
try {
HttpConnection http = new HttpConnection();
data = http.readUrl(url[0]);
} catch (Exception e) {
Log.d("Background Task", e.toString());
}
return data;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
new ParserTask().execute(result);
}
}
private class ParserTask extends
AsyncTask<String, Integer, List<List<HashMap<String, String>>>> {
@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]);
PathJSONParser parser = new PathJSONParser();
routes = parser.parse(jObject);
} catch (Exception e) {
e.printStackTrace();
}
return routes;
}
@Override
protected void onPostExecute(List<List<HashMap<String, String>>> routes) {
task.callBack(routes);
}
}
EDIT
я делаю именно так, как его показанный here, но то, что происходит на основе начала и конца значения Google Maps API V2 дает мне маршрут, но это может быть не тот маршрут, по которому пользователь путешествовал, поскольку он, возможно, посетил некоторые места между началом и концом.
Возможный дубликат http://stackoverflow.com/questions/14710744/how-to-draw-road-directions-between-two-geocodes-in-android-google-map-v2/16315944#16315944 –
@jaydroider да, я делаю именно то, как там показано, но то, что происходит, основано на начальных и конечных значениях. Карты Google APi V2 дают мне маршрут, но это может быть не тот маршрут, по которому пользователь путешествовал, поскольку он, возможно, посетил некоторые места между началом и концом. – user2056563
Я думаю, вам нужно создать службу, которая будет получать местоположение пользователя на некотором интервале и передав это местоположение в Google API (https://maps.googleapis.com/maps/api/directions/json?str_origin&str_dest&sensor=false) с некоторым интервалом вы будете рисовать путь по мере прохождения пользователем. – Dhruv