Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Построить маршрут на картах Google / 25 сообщений из 25, страница 1 из 1
05.08.2015, 16:31
    #39023703
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Разбираюсь с темой прокладки маршрутов на картах Гугла. Понимаю, что в инете есть куча готовых примеров, хочется самому разобраться.
Вообщем сформировал http запрос, получил JSON ответ, пытаюсь его распарсить, возникает ошибка.
Распарсить пробую так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public ArrayList<Section> parse(JSONObject jsonObject)  {
        Log.d("myLogs", "start parse");

        ArrayList<Section> list = new ArrayList<Section>();
        Location startGeo;
        Location endGeo;
        JSONArray results = jsonObject.optJSONArray("routes");
        JSONObject route = results.optJSONObject(0);
        Log.d("myLogs","1");
        JSONArray legs = route.optJSONArray("legs");              //<---ОШИБКА!
        Log.d("myLogs","2");
        JSONObject leg = legs.optJSONObject(0);
        Log.d("myLogs","3");
        JSONArray steps = leg.optJSONArray("steps");
        Log.d("myLogs","4");

        for (int i=0; i < steps.length(); ++i) {
            JSONObject step = steps.optJSONObject(i);
            JSONObject startP = step.optJSONObject("start_location");
            JSONObject endP = step.optJSONObject("end_location");
            JSONObject polyline = step.optJSONObject("polyline");
            String encodedPoints = polyline.optString("points");

            startGeo = new Location("");
            endGeo = new Location("");

            startGeo.setLatitude(startP.optDouble("lat"));
            startGeo.setLongitude(startP.optDouble("lng"));
            endGeo.setLatitude(endP.optDouble("lat"));
            endGeo.setLongitude(endP.optDouble("lng"));

            list.add(new Section(startGeo.getLatitude(), startGeo.getLongitude(), endGeo.getLatitude(), endGeo.getLongitude() , encodedPoints));
        }

        Log.d("myLogs", "end parse");
        return list;
    }



в логах вот что

08-05 16:22:25.490 13523-13523/ru.startandroid.mynavigator3 E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at ru.startandroid.mynavigator3.MapsActivity.parse(MapsActivity.java:106)
at ru.startandroid.mynavigator3.MapsActivity$1$2.run(MapsActivity.java:69)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)


Подскажите, в чем ошибка!
...
Рейтинг: 0 / 0
05.08.2015, 16:35
    #39023708
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
route = null?
...
Рейтинг: 0 / 0
05.08.2015, 16:42
    #39023716
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
wadman,

http запрос такой
http://maps.googleapis.com/maps/api/directions/json?origin=Воронеж&destination=Москва&sensor=false
если вставить в строку браузера можно увидеть результаты, которые мне приходят (это я на всякий случай)

так вот, как исправить
Код: java
1.
JSONObject route = results.optJSONObject(0);



чтоб route<>null
...
Рейтинг: 0 / 0
05.08.2015, 16:46
    #39023719
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
странно, а если щелкнуть по гиперссылке из предыдущего моего поста, то действительно, такое ощущение что ответ пустой.
А если скопировать строку в адресную строку браузера, то возвращаются данные с координатами
Не подскажите почему так?
...
Рейтинг: 0 / 0
05.08.2015, 16:48
    #39023721
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
nikompНе подскажите почему так?
Может разница в кодировке.
...
Рейтинг: 0 / 0
05.08.2015, 16:53
    #39023724
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
wadman,

а как узнать, что мне конкретно приходит в программу? могу я как-то в лог скинуть результат запроса?
...
Рейтинг: 0 / 0
05.08.2015, 16:58
    #39023736
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
да, приходит пустой ответ, вот лог

08-05 16:57:07.230 14073-14151/ru.startandroid.mynavigator3 D/myLogs﹕ {
"geocoded_waypoints" : [
{
"geocoder_status" : "ZERO_RESULTS"
},
{
"geocoder_status" : "ZERO_RESULTS"
}
],
"routes" : [],
"status" : "NOT_FOUND"
}

Почему? Где исправить кодировку?
...
Рейтинг: 0 / 0
05.08.2015, 17:00
    #39023738
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
http://sourceforge.net/projects/paros/ полезная штучка, локальная прокси, с помощью которой можно увидеть разницу и сделать выводы.
Должна быть у всех, кто что-то делает с инетом.
...
Рейтинг: 0 / 0
06.08.2015, 08:55
    #39024001
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
исправил ошибку, видимо в http запросе неправильно распознавались кириллические символы. Написал названия город латиницей запрос стал формироваться.
Теперь уткнулся в задачу отображения координат на карте.
Метод parse возвращает мне ArrayList<Section>
Section выглядит так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class Section {
    private Double startLatitude;
    private Double startLongitude;
    private Double endLatitude;
    private Double endLongitude;
    private String encodedPoints;

    public Section (Double dLatitude, Double dlongitude, Double eLatitude, Double elongitude, String sencodedPoints){
        this.startLatitude=dLatitude;
        this.startLongitude=dlongitude;
        this.endLatitude=eLatitude;
        this.endLongitude=elongitude;
        this.encodedPoints=sencodedPoints;
    }

}



пытаюсь отобразить маршрут через PolylineOptions, пока не получается не пойму, как считывать отдельные элементы из ArrayList<Section>
...
Рейтинг: 0 / 0
06.08.2015, 09:06
    #39024011
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Все таки посмотри другие примеры http://blog-emildesign.rhcloud.com/?p=822 строит и рисует маршрут из текущей точки до указанной.
...
Рейтинг: 0 / 0
06.08.2015, 10:21
    #39024071
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
nikompисправил ошибку, видимо в http запросе неправильно распознавались кириллические символы. Написал названия город латиницей запрос стал формироваться.
Теперь уткнулся в задачу отображения координат на карте.
Метод parse возвращает мне ArrayList<Section>
Section выглядит так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class Section {
    private Double startLatitude;
    private Double startLongitude;
    private Double endLatitude;
    private Double endLongitude;
    private String encodedPoints;

    public Section (Double dLatitude, Double dlongitude, Double eLatitude, Double elongitude, String sencodedPoints){
        this.startLatitude=dLatitude;
        this.startLongitude=dlongitude;
        this.endLatitude=eLatitude;
        this.endLongitude=elongitude;
        this.encodedPoints=sencodedPoints;
    }

}




пытаюсь отобразить маршрут через PolylineOptions, пока не получается не пойму, как считывать отдельные элементы из ArrayList<Section>


то-есть url encode это не наш вариант, да ?
...
Рейтинг: 0 / 0
06.08.2015, 10:52
    #39024096
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Используя
http://security-corp.org/programming/vebdev/24242-marshruty-na-kartah-google-v-android-prilozhenii.html ,
http://habrahabr.ru/post/142149/ ,
и вот это
http://startandroid.ru/ru/uroki/vse-uroki-spiskom/307-urok-140-google-maps-svoi-obekty-na-karte.html

получилось реализовать. см. картинку

есть вопросы к скорости отрисовки маршрута, т.е. при выведении линии, немного притормаживает, но в целом все понятно

Джибсто-есть url encode это не наш вариант, да ?


не совсем понимаю, о чем Вы. Есть какой-то метод, который позволит использовать Кириллицу в http запросе?
...
Рейтинг: 0 / 0
06.08.2015, 10:59
    #39024105
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
nikompЕсть какой-то метод, который позволит использовать Кириллицу в http запросе?
Ни за что не угадаешь... URLEncoder
...
Рейтинг: 0 / 0
06.08.2015, 11:48
    #39024179
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
wadman,

Век живи - век учись ... )) (дальше не продолжаю)

Спасибо за подсказку!
...
Рейтинг: 0 / 0
06.08.2015, 13:14
    #39024269
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
А нельзя ли контролы размещать поверх карты, например progressbar, чтоб занять внимание пользователя пока строится маршрут?
...
Рейтинг: 0 / 0
06.08.2015, 13:22
    #39024292
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Попробовал и не получилось?
...
Рейтинг: 0 / 0
06.08.2015, 13:42
    #39024332
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
wadman,

Попробовал, не получилось
...
Рейтинг: 0 / 0
06.08.2015, 14:10
    #39024363
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Layout?
...
Рейтинг: 0 / 0
06.08.2015, 17:19
    #39024538
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
nikompА нельзя ли контролы размещать поверх карты, например progressbar, чтоб занять внимание пользователя пока строится маршрут?

самый просто способ Relativelayout

у него точно отображение с верху в них элементов.
и самый последний будет с верху.
...
Рейтинг: 0 / 0
06.08.2015, 18:25
    #39024598
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Джибс,

угадал :) но в нем еще можно и друг на друга накладывать, в т.ч. и прогресс по середине карты расположить и показывать/скрывать, когда нужно.
...
Рейтинг: 0 / 0
07.08.2015, 11:39
    #39024888
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Вообщем, мыкался долго с этими Layout'ами. Нашел реализацию с FrameLayout

http://apsoid.ru/talk/topic/4855-кнопки-поверх-mapview/

Но никак не соображу как в AndroidStudio через IDE создать активити с таким фреймом, (даже интересно).
Ну сделал используя xml'ку из ссылки.

С остальными Layout'ами получается так, что они перекрывают карту
...
Рейтинг: 0 / 0
07.08.2015, 12:11
    #39024928
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
nikompВообщем, мыкался долго с этими Layout'ами. Нашел реализацию с FrameLayout

http://apsoid.ru/talk/topic/4855-кнопки-поверх-mapview/

Но никак не соображу как в AndroidStudio через IDE создать активити с таким фреймом, (даже интересно).
Ну сделал используя xml'ку из ссылки.

С остальными Layout'ами получается так, что они перекрывают карту

чот за бред ?

у меня для карт используется RelativeLayout
на нем я и кнопки новые для карты показываю, и прогресбары и другую инфу.

wrap_content не пробовал ставить контролам ?
...
Рейтинг: 0 / 0
07.08.2015, 12:15
    #39024933
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Джибсчот за бред ?
Показал бы уже xml. Я-то мапов ни разу не делал.
...
Рейтинг: 0 / 0
07.08.2015, 12:49
    #39024980
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Дело в том, что я в IDE не могу создать вот такой Layout

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainlayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" android:id="@+id/map" tools:context=".MapsActivity"
        android:name="com.google.android.gms.maps.SupportMapFragment" />

    <Button
        android:id="@+id/test"
        android:text="Построить"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:clickable="true"
        android:onClick="OnClickTest" />
</FrameLayout>



+ беда еще в том что из IDE нет возможности добавить MapView, пришлось сначала создать отдельный модуль с MapsActivity, и потом из этого модуля скопировать кусок

Код: xml
1.
2.
3.
4.
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" android:id="@+id/map" tools:context=".MapsActivity"
        android:name="com.google.android.gms.maps.SupportMapFragment" />



Джибсчот за бред ?


Да интересно было бы посмотреть Ваш код, если Вы не возражаете.
...
Рейтинг: 0 / 0
07.08.2015, 13:03
    #39024991
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить маршрут на картах Google
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >


  <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:id="@+id/map" tools:context=".MapsActivity"
        android:name="com.google.android.gms.maps.SupportMapFragment" />


   <ImageView
        android:id="@+id/imgLocation"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="8dp"
        android:layout_marginRight="8dp"
        android:background="@drawable/button_map_background"
        android:src="@drawable/ic_my_location_search" />

</RelativeLayout >
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Построить маршрут на картах Google / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]