powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Построить маршрут на картах Google
25 сообщений из 25, страница 1 из 1
Построить маршрут на картах Google
    #39023703
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разбираюсь с темой прокладки маршрутов на картах Гугла. Понимаю, что в инете есть куча готовых примеров, хочется самому разобраться.
Вообщем сформировал 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
Построить маршрут на картах Google
    #39023708
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
route = null?
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39023716
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Построить маршрут на картах Google
    #39023719
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно, а если щелкнуть по гиперссылке из предыдущего моего поста, то действительно, такое ощущение что ответ пустой.
А если скопировать строку в адресную строку браузера, то возвращаются данные с координатами
Не подскажите почему так?
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39023721
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompНе подскажите почему так?
Может разница в кодировке.
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39023724
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

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

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
Построить маршрут на картах Google
    #39023738
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://sourceforge.net/projects/paros/ полезная штучка, локальная прокси, с помощью которой можно увидеть разницу и сделать выводы.
Должна быть у всех, кто что-то делает с инетом.
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39024001
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>
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39024011
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все таки посмотри другие примеры http://blog-emildesign.rhcloud.com/?p=822 строит и рисует маршрут из текущей точки до указанной.
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39024071
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Построить маршрут на картах Google
    #39024096
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используя
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
Построить маршрут на картах Google
    #39024105
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompЕсть какой-то метод, который позволит использовать Кириллицу в http запросе?
Ни за что не угадаешь... URLEncoder
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39024179
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

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

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

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

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

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

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

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

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

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

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

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

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

чот за бред ?

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

wrap_content не пробовал ставить контролам ?
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39024933
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибсчот за бред ?
Показал бы уже xml. Я-то мапов ни разу не делал.
...
Рейтинг: 0 / 0
Построить маршрут на картах Google
    #39024980
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что я в 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
Построить маршрут на картах Google
    #39024991
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
25 сообщений из 25, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Построить маршрут на картах Google
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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