Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Android > Прокладка маршрута с помощью Google Maps API на Android


Автор: Homez 03.04.12, 17:29
Всем привет!

Мне нужно в Android приложение добавить возможность прокладки маршрута между двумя точками, возможно, включая промежуточные точки (для водителей такси), с оценкой времени на преодоление этого маршрута, используя Google Maps API. Кто-нибудь интересовался, пробовал? К сожалению, поиск в интернете пока ничего не дал, вылезают ссылки на всякие приложения-навигаторы, восхваления новейших достижений гугла и т.д. Дальше просто отметки точек на карте, кастомных оверлеев и т.п. я не добрался. Это вообще возможно?

Или мне стоит сразу ринуться на какой-нибудь другой, специализированный форум?

Заранее всем спасибо!

Автор: mrco 04.04.12, 12:02
Есть Google Directions API

Автор: Британский учёный 04.04.12, 12:35
Цитата mrco @
Есть Google Directions API

Но обращаем внимание на limitations ;)

Автор: Хрен 04.04.12, 13:47
Карты свои используете или гуглмаповские? Если гуглмаповские, то наверняка там проблем не возникнет. А вот со своими - это строить дорожный граф и каким-нибудь алгоритмом его обходить.
Совсем недавно столкнулся с тем, что почти никакие гео-API от гугла юзать отдельно от карт гугл не разрешает.

Автор: Homez 04.04.12, 18:32
Цитата mrco @
Есть Google Directions API

Гм, странно, почему этот сервис отдельно от Google Maps API. Хорошо, спасибо, буду знать.

Цитата Хрен @
Карты свои используете или гуглмаповские? Если гуглмаповские, то наверняка там проблем не возникнет. А вот со своими - это строить дорожный граф и каким-нибудь алгоритмом его обходить.

Зачем же свои? Делать нам больше нечего:)

Автор: Homez 04.04.12, 19:32
Цитата Британский учёный @
Но обращаем внимание на limitations ;)

2500 запросов в сутки можно. Но я не понял, это с конкретным ключом API, или с конкретного девайса?

Автор: Хрен 05.04.12, 08:47
Цитата Homez @
Делать нам больше нечего

Ну не скажи. Большинство навигаторов юзают свои, ибо это позволяет не привязываться к этим вашим интернетам ;)

Цитата Homez @
2500 запросов в сутки можно. Но я не понял, это с конкретным ключом API, или с конкретного девайса?

С конкретным ключом. Т.е. сжираться это у тебя будет за день-два - и тебе придётся постоянно распространять новый ключ =)
Как вариант - заключить договор с гуглом

Автор: Homez 05.04.12, 09:00
Цитата Хрен @
Ну не скажи. Большинство навигаторов юзают свои, ибо это позволяет не привязываться к этим вашим интернетам ;)

Не такой у нас масштаб, чтобы делать свои карты, мы ж не софтверная фирма, а скромный таксопарк:)

Цитата Хрен @
С конкретным ключом. Т.е. сжираться это у тебя будет за день-два - и тебе придётся постоянно распространять новый ключ =)

Сжираться за день - согласен. А за два как может сжираться, когда, по идее, каждые сутки на гугле должно срабатывать обнуление счетчкика вызовов?

Еще не очень понятно, как ведутся счетчики количеств использования сервиса. Насколько я понял по документации, в этот Directions API не надо передавать свой ключ Google Maps API. Как же считается тогда?

Добавлено
Цитата Хрен @
С конкретным ключом. Т.е. сжираться это у тебя будет за день-два - и тебе придётся постоянно распространять новый ключ =)

Ключ Google Maps API привязан к цифровой подписи (ключу) конкретной копии приложения. Поэтому вопрос можно решить, просто каждую копию снабжая своей подписью. Можно ли такое сделать? Как это можно автоматизировать? Пока я работал только с debugkey...

Автор: Хрен 05.04.12, 13:43
Цитата Homez @
Можно ли такое сделать?

При помощи ant, например. Там можно автоматизировать генерацию ключей для пакета - просто для каждой копии пакета генеришь новый ключ.
Синтаксис там довольно простой, я за вечер освоил. Да и в любом случае, как андроид девелоперу, он тебе будет полезен - часто нужно делать возможность консольной сборки (без этих ваших эклипсов) =)

Автор: Homez 10.04.12, 17:10
Хрен, а где-нибудь есть туториалы по консольной сборке проектов Android? А то Eclipse меня уже начинает раздражать. javaw жрет до 400 метров оперативки. А сейчас уже несколько дней у меня выполняется одна программулина, сбросить жаль, хочу дождаться результата:) В итоге из-за этого Eclipse совсем не живой, скорость работы в нем замедлилась в разы. В Notepad++ такого ведь не будет:)

Вот java-приложения, без андроидов, я ведь всю жизнь в текстовом редакторе писал и компилировал и запускал из командной строки. И не чуть от этого не проигрывал.

Я тут переключился на Яндекс-Карты Mapkit для Android пока. Может, кто-то с ними работал? В интернете очень мало информации по разработке с ними, на Хабрахабре, например, только очень поверхностное прикосновение. Вместе с тем, не у меня уже первого, возникают проблемы по подключению этого кита в проект. Пример мне собрать удалось, а когда попытался подключить библиотеку в свой рабочий проект, при открытии формы с картой все время мне в LogCat пишет, типа error inflating class MapView. Как это разрулить?

Добавлено
Гм, кажется, понял мою ошибку. Я jar-файл с библиотекой подключал из внешной папки, куда либу изначально распаковал, хотя и сделал копию внутри папки проекта. А в примере я подключал "внутренний" jar.

Добавлено
Гм, теперь критических ошибок не скочет, но и карта не показывается. Ну правда, я еще код не настроил. И да, пока виснет просто... Но уже хоть что-то другое.

Автор: Hsilgos 10.04.12, 17:32
Цитата
а где-нибудь есть туториалы по консольной сборке проектов Android? А то Eclipse меня уже начинает раздражать. javaw жрет до 400 метров оперативки. А сейчас уже несколько дней у меня выполняется одна программулина, сбросить жаль, хочу дождаться результата В итоге из-за этого Eclipse совсем не живой, скорость работы в нем замедлилась в разы. В Notepad++ такого ведь не будет

Ну, во-первых, под андроид очень хорошо идет Idea. Во-вторых, проект для андроида собирается из командной строки при помощи ANT-a. Вот тут и тут неплохо описано

Автор: Homez 10.04.12, 17:43
Спасибо, попробую Ant.

Автор: Хрен 10.04.12, 17:56
Цитата Homez @
В Notepad++ такого ведь не будет

А ещё там не будет автодополнения, автоматической проверки на ошибки и прочих вкусностей. Его можно заюзать разве что для мелких правок.
Действительно, попробуй Idea - она в отличие от эклипса написана не на яве, так что работает пошустрее. Единственное что - её официально не поддерживает гугл, так что всяких плагинов для андроид-разработки с ней придётся ждать дольше.
Кроме Ant'а можешь ещё глянуть Maven. Но Ant попроще. Не знаю, правда, лучше ли, т.к. с мавеном имел дело весьма поверхностно.

Автор: Homez 10.04.12, 18:49
Цитата Хрен @
А ещё там не будет автодополнения, автоматической проверки на ошибки и прочих вкусностей.

Ну это понятно. Например, в Eclipse мне понравилась фича, когда какой-то класс разрешиться не может (забыл, например, сделать import, да или просто не помнишь, какой это пакет), то предлагает на выбор один или несколько пакетов, где этот класс есть, несколько раз мне это помогало.

Ant я уже поставил, должен работать. Но туториалы, что Hsilgos подсказал, буду уже завтра изучать и пробовать. Может и пойдет.

Когда я программирую просто Java-приложение в Notepad++, то мне иногда, конечно, автодополнения не хватает и подсветки ошибок, нужно четко выверять все идентификаторы, иначе просто сыпется куча глупых ошибок. Но пока на Java я писал только небольшие задачки - у меня на счету только построение суммы гармоник ряда Фурье по кусочно-линейной функции, задаваемой кликами на экране, да несколько десятков решенных задач с Project Euler, до больших проектов не дошло.

Хотя вот, сейчас же делаю довольно объемную работу на асме, получил в наследство проект на много сотен строк кода. Набираю в том же Notepad++, и все пока шикарно (не с точки зрения качества кода моего, это я уж не буду судить, а с точки зрения того, что пока не жалуюсь на какие-то неудобства).

Автор: Хрен 10.04.12, 19:17
Цитата Homez @
в Eclipse мне понравилась фича

Да, в Idea этого не хватает, кстати.

Я одно время тоже полностью ось написал на mc. Но это было по молодости и глупости =)

Автор: Homez 10.04.12, 19:27
Цитата Хрен @
Я одно время тоже полностью ось написал на mc.

Что ты имел в виду под осью? И что такое mc?:)

Автор: Хрен 10.04.12, 19:40
Цитата Homez @
Что ты имел в виду под осью?

Операционная система. Простенькая, конечно.

Цитата Homez @
И что такое mc?

Midnight commander - Far под никсы =)

Автор: Homez 11.04.12, 19:25
Туториалы, предложенные Hsilgos, немного устаревшие, пару лет ведь прошло, Ant успел измениться. Пришлось некоторые вещи догонять отдельно. Но вот только что получилось собрать и установить с его помощью хелло-ворлд-приложение, которое создается утилиткой android в качестве заделки для проекта. Конечно, приходится применять как два дополнительных шага запуск эмулятора и запуск собственно свежеустановленного приложения, но это не составляет большой проблемы, тем более первое и так приходилось часто делать отдельно, когда работал в Eclipse (почему-то когда я задавал partition size побольше в свойствах эмулятора в AVD, запущенный эмулятор подвисал, приходилось запускать его из командной строки, задавая эту опцию в ней).

Завтра попробую собрать с помощью ant уже свою разработку.

Автор: Homez 12.04.12, 09:53
Так, товарищи, сделал сборку debug своего рабочего приложения с помощью ant. Все формы работают, кроме формы с Яндекс-картой - выскакивает сообщение об ошибке, активити закрывается. А как узнать, в чем дело, как отлаживать вне эклипса?

Автор: Хрен 12.04.12, 09:55
LogCat андроидовский смотреть надо. Как это делать без эклипса, не знаю. Но наверно как-то можно =)

Автор: Homez 12.04.12, 10:35
Хрен, твой ответ, конечно, мне в большую помощь:D

Ну может, я и не справедлив к эклипсу, просто не получается разобраться с этой проблемой в нем - с этим error inflating class. Почему-то добавление jar яндерс-мэпкита в проект на примере отлично сработало, а в мой личный проект - вот такая ошибка. Но тут в интернете наткнулся на пару страничек и даже на одно видео, где предлагалось создать отдельно Library Project с этим jar, а в основном проекте просто добавить на него ссылку. Но проследовать всю дорогу по видео не удалось - при создании нового проекта на основе уже существующего кода Eclipse требует файл манифеста, а там его и в помине нет, а свой сочинить я особо не умею, не навострился. Хотя может, я что не так углядел, может, там просто создается новый проект, а потом в него просто добавляется библиотека? Сейчас пересмотрю видео обязательно.

Добавлено
Посмотрел, нет, проект библиотеки создается на основе существующих на диске сорцов. Странно.

Добавлено
Набрал в командной строке "adb logcat". Ну чем не LogCat?:) Значит, есть возможность захватывать вывод в LogCat при запуске конкретного приложения, буду исследовать этот вопрос. Но если кто подскажет, буду признателен.

Добавлено
а, понял, adb logcat просто висит и ловит весь вывод в LogCat для устройства. Так что сейчас попробую поймать, что у меня там не так.

Добавлено
Удалось поймать, то же самое:

E/AndroidRuntime( 196): java.lang.RuntimeException: Unable to start activity Co
mponentInfo{ru.robocab.driverapp/ru.robocab.driverapp.YandexMapActivity}: androi
d.view.InflateException: Binary XML file line #6: Error inflating class ru.yande
x.yandexmapkit.MapView

Но я в этой консольной сборке и не предпринимал никаких действий для подключения библиотеки, просто скопировал jar и пару so, щас вкурю, что надо сделать.

Автор: Homez 12.04.12, 15:59
Отбой, вопрос решен! Оказалось, что нужно более тщательно вчитываться в LogCat, там есть такие замечательные строки как caused by. Вот по одному такому caused by и определил, что нужно добавить в манифест строку

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Мэпкит требует это разрешение, в манифесте примера оно есть! Чувствую себя идиотом :wall:

Автор: Хрен 12.04.12, 19:59
Цитата Homez @
Чувствую себя идиотом

Все через это прошли ;)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)