Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
1

Прокладывание маршрута и Retrofit

03.01.2015, 14:33. Просмотров 890. Ответов 12
Метки нет (Все метки)

Добрый день. Есть проблема с реализацией маршрутов в приложении. Суть проста: есть 2 точки, необходимо их соединить маршрутом. На основе статьи, пытаюсь реализовать данную функцию. Проблема заключается в том, что начальная и конечная точка имеет тип LatLng, в запросе же должны быть тип String:
Java
1
2
3
4
5
6
7
8
public interface RouteApi {
    @GET("/maps/api/directions/json")
    RouteResponse getRoute(
            @Query(value = "origin", encodeValue = false) String position,
            @Query(value = "destination", encodeValue = false) String destination,
            @Query("sensor") boolean sensor,
            @Query("language") String language);
}
Суть вопроса заключается в следующем: можно ли каким то образом реализовать данный GET запрос, передавая в качестве параметров точки типа LatLng?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2015, 14:33
Ответы с готовыми решениями:

Retrofit trouble
По тз нужно написать POST запрос через retrofit, Я создал его, но приложение...

Библиотека Retrofit
Мне нужно освоить библиотеку Retrofit.Я нашол урок...

Retrofit Recyclerview
Здравствуйте, уважаемые форумчане. Помогите добавить onScroll в...

Retrofit, JSON, @POST, @GET
Уважаемые программисты, прошу вашей помощи! Хожу на курсы по разработке...

Retrofit 2 post запрос
Делал реализацию клиент-сервер, в андроид при помощи retrofit. и встретился с...

12
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
04.01.2015, 10:32 2
_Vertigo_, так у Вас сервер принимает два параметра строковых. Не получится передавать ему LatLng.
0
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 12:37  [ТС] 3
YuraAAA, это я понимаю) Вопрос заключается в том, что я не понимаю как переделать данный запрос под свои нужды.
0
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
04.01.2015, 12:45 4
Конвертировать LatLng в String

Java
1
2
3
4
5
6
7
LatLng latLng;
Double l1=latlng.latitude;
Double l2=latlng.longitude;
String coordl1 = l1.toString();
String coordl2 = l2.toString();
l1 = Double.parseDouble(coordl1);
l2 = Double.parseDouble(coordl2);
0
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 12:55  [ТС] 5
dajver, конвертировать я уже пробовал, безуспешно.
0
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
04.01.2015, 12:56 6
Тогда я не понимаю в чем проблема? Под какие нужды вы хотите переделать координаты? Нам нужна конкретика, мы не экстрасенсы )
0
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 13:00  [ТС] 7
Суть проста: у меня есть 2 точки типа LatLng, мне нужно выполнить по ним запрос, чтобы он вернул мне JSON с набором точек, который в последствии будет применен для прокладывании маршрута.
Из всего этого мне непонятно только одно: как сделать такой запрос с точками формата LatLng, а не String.
Вот так)
0
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
04.01.2015, 13:03 8
У вас два LatLng?
Запрос куда? Какого вида? Вам его надо как то генерировать? Или просто запрос в какое-то апи?
Вам нужно конвертировать не LatLng в String, а наоборот?
0
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 13:10  [ТС] 9
Просто запрос в АПИ службы маршрутов.
Два LatLng - начальная точка и конечная точка. В описании запроса они выглядят так:
Java
1
2
3
 
@Query(value = "origin", encodeValue = false) String position,
@Query(value = "destination", encodeValue = false) String destination
Position - начальная точка, destination - конечная. Так эти 2 точки в моем коде представлены типом LatLng. Запрос же нужно делать по точкам типа String.
Конвертировал я из LanLng в String. Так как этого требует данный запрос.

Добавлено через 1 минуту
Как выполняю запрос:
Java
1
2
3
4
5
6
7
8
9
10
public  void get(LatLng start, LatLng end){
 
        RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint("https://maps.googleapis.com")
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .build();
        RouteApi routeService = restAdapter.create(RouteApi.class);
        RouteResponse routeResponse = routeService
                .getRoute(Convert(start),Convert(end), true, "ru");
    }
Как конвертирую:
Java
1
2
3
4
5
6
7
    public String Convert(LatLng latLng){
        Double l1=latLng.latitude;
        Double l2=latLng.longitude;
        String coordl1 = l1.toString();
        String coordl2 = l2.toString();
        return coordl1 + " , " + coordl2;
    }
0
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
04.01.2015, 13:12 10
А в каком виде они должны выглядеть? по идее можно передавать в виде String так "lat | lng" или как то еще, но я не знаю как можно передать две координаты в стриг, это как то глупо сделано) Обычно в таком случае делают 4 String переменных и в них передают координаты...
1
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 13:17  [ТС] 11
Цитата из статьи - мануала.
К числу обязательных параметров относятся origin и destination — их можно указать в виде текстового представления адреса, либо в виде значений широты и долготы, разделенных запятой.
В виде текстового представления адреса сразу отпадает, так как не всегда к выбранной точке на карте можно подобрать какой - либо текстовый адрес. Поэтому использую второй вариант - широта и долгота, разделенные запятой.

Под каждую точку там свой String, для начальной - String postion, для конечной - String destination.
0
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
04.01.2015, 13:38 12
Ну и чем вас
Java
1
2
3
4
5
6
7
public String Convert(LatLng latLng){
        Double l1=latLng.latitude;
        Double l2=latLng.longitude;
        String coordl1 = l1.toString();
        String coordl2 = l2.toString();
        return coordl1 + " , " + coordl2;
    }
не устаревает?
0
_Vertigo_
14 / 14 / 6
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 14:19  [ТС] 13
Проблема решена, переделал запрос:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
private String getMapsApiDirectionsUrl(LatLng start, LatLng end) {
        String waypoints = "waypoints=optimize:true|"
                + start.latitude + "," + start.longitude
                + "|" + "|" + end.latitude + ","
                + end.longitude;
 
        String sensor = "sensor=false";
        String params = waypoints + "&" + sensor;
        String output = "json";
        String url = "https://maps.googleapis.com/maps/api/directions/"
                + output + "?" + params;
        return url;
    }
0
04.01.2015, 14:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2015, 14:19

Ошибка JSON в Retrofit
Всем привет! Недавно начал изучение Retrofit как известной библиотеки для...

OPTIONS запросы в Retrofit
Всем привет, никто не сталкивался с данным вопросом? Я нашел в репозитории...

Retrofit 2. Возвращаемое значение == null
Делаю небольшое приложение для VK. Решил использовать Retrofit 2. Набросал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru