Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

03.01.2015, 14:33. Просмотров 810. Ответов 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 (Программирование Android):

Retrofit Recyclerview - Программирование Android
Здравствуйте, уважаемые форумчане. Помогите добавить onScroll в RecyclerView. Вот код public class MainActivity extends...

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

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

Retrofit 2 post запрос - Программирование Android
Делал реализацию клиент-сервер, в андроид при помощи retrofit. и встретился с проблемой как реализовать POST запрос. ( GET запрос у меня...

Retrofit, JSON, @POST, @GET - Программирование Android
Уважаемые программисты, прошу вашей помощи! Хожу на курсы по разработке мобильных приложений, месяц, как хожу, мало еще что знаю, но...

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

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

Под каждую точку там свой String, для начальной - String postion, для конечной - String destination.
0
dajver
409 / 273 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
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 / 2
Регистрация: 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
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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