Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
#1

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

03.01.2015, 14:33. Просмотров 730. Ответов 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?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2015, 14:33     Прокладывание маршрута и Retrofit
Посмотрите здесь:

Библиотека Retrofit - Программирование Android
Мне нужно освоить библиотеку Retrofit.Я нашол урок https://www.youtube.com/watch?v=c5HX_GoyaDs. Я постарался повторить и у меня возникли...

OPTIONS запросы в Retrofit - Программирование Android
Всем привет, никто не сталкивался с данным вопросом? Я нашел в репозитории ретрофита какое-то упоминание но я не знаю как его примернить...

Ошибка JSON в Retrofit - Программирование Android
Всем привет! Недавно начал изучение Retrofit как известной библиотеки для REST-запросов. Там всё сильно автоматизировано, например,...

Относительные пути в аннотациях Retrofit - Программирование Android
@GET("/feeds/flowers.json") Так аннотируется Get запрос Retrofit, где /feeds/flowers.json путь к Json файлу уже на сервере. А почему в...

Retrofit 2. Возвращаемое значение == null - Программирование Android
Делаю небольшое приложение для VK. Решил использовать Retrofit 2. Набросал простенький запрос, но в ответ приходит код 200 и null. ...

Работа с SOAP с помощью retrofit - Программирование Android
работа с SOAP с помощью retrofit или похожей библиотекой.. Ребята подскажите как работать с этим чудом SOAP? Как намного проще?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.01.2015, 10:32     Прокладывание маршрута и Retrofit #2
_Vertigo_, так у Вас сервер принимает два параметра строковых. Не получится передавать ему LatLng.
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 12:37  [ТС]     Прокладывание маршрута и Retrofit #3
YuraAAA, это я понимаю) Вопрос заключается в том, что я не понимаю как переделать данный запрос под свои нужды.
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
04.01.2015, 12:45     Прокладывание маршрута и Retrofit #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);
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 12:55  [ТС]     Прокладывание маршрута и Retrofit #5
dajver, конвертировать я уже пробовал, безуспешно.
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
04.01.2015, 12:56     Прокладывание маршрута и Retrofit #6
Тогда я не понимаю в чем проблема? Под какие нужды вы хотите переделать координаты? Нам нужна конкретика, мы не экстрасенсы )
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 13:00  [ТС]     Прокладывание маршрута и Retrofit #7
Суть проста: у меня есть 2 точки типа LatLng, мне нужно выполнить по ним запрос, чтобы он вернул мне JSON с набором точек, который в последствии будет применен для прокладывании маршрута.
Из всего этого мне непонятно только одно: как сделать такой запрос с точками формата LatLng, а не String.
Вот так)
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
04.01.2015, 13:03     Прокладывание маршрута и Retrofit #8
У вас два LatLng?
Запрос куда? Какого вида? Вам его надо как то генерировать? Или просто запрос в какое-то апи?
Вам нужно конвертировать не LatLng в String, а наоборот?
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 13:10  [ТС]     Прокладывание маршрута и Retrofit #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;
    }
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
04.01.2015, 13:12     Прокладывание маршрута и Retrofit #10
А в каком виде они должны выглядеть? по идее можно передавать в виде String так "lat | lng" или как то еще, но я не знаю как можно передать две координаты в стриг, это как то глупо сделано) Обычно в таком случае делают 4 String переменных и в них передают координаты...
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 13:17  [ТС]     Прокладывание маршрута и Retrofit #11
Цитата из статьи - мануала.
К числу обязательных параметров относятся origin и destination — их можно указать в виде текстового представления адреса, либо в виде значений широты и долготы, разделенных запятой.
В виде текстового представления адреса сразу отпадает, так как не всегда к выбранной точке на карте можно подобрать какой - либо текстовый адрес. Поэтому использую второй вариант - широта и долгота, разделенные запятой.

Под каждую точку там свой String, для начальной - String postion, для конечной - String destination.
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
04.01.2015, 13:38     Прокладывание маршрута и Retrofit #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;
    }
не устаревает?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2015, 14:19     Прокладывание маршрута и Retrofit
Еще ссылки по теме:

Извлечение модели ошибки retrofit + rx - Программирование Android
Работаю с Retrofit и RX. Через Gradle подключаю так: compile 'com.squareup.retrofit2:retrofit:2.0.0' compile...

Retrofit 2, POST запрос, авторизация - Программирование Android
Добрый день! На собеседовании (Junior Android Dev) мне дали задание написать приложение с авторизацией. Вот текст задачи: Все методы...

Разницы между OkHTTP AND Retrofit - Программирование Android
Добрый вечер, ребята в чем разница между Retrofit и okHTTP это код Retrofit Retrofit retrofit = new Retrofit.Builder() ...

Получить заголовоки http ответа в retrofit - Программирование Android
Если я сделал http запрос по url. В ответ мне пришел Response, то как из этого Response можно выделить http заголовок(содержит ли он его...


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

Или воспользуйтесь поиском по форуму:
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
04.01.2015, 14:19  [ТС]     Прокладывание маршрута и Retrofit #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;
    }
Yandex
Объявления
04.01.2015, 14:19     Прокладывание маршрута и Retrofit
Ответ Создать тему
Опции темы

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