Jump to content
GPS навигатор СитиГИД
Joss

API для вызова СитиГИД, GeoNET, bGEO для Android

Recommended Posts

Вызов навигационной программы из стороннего приложения производится следующим образом (исх. код на Java с использованием Android API):

  try   {
    Intent intent=new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.setType("vnd.android.cursor.item/vnd.net.probki.cityguide.cmd");
    intent.setPackage("cityguide.probki.net");        // здесь указывается имя пакета программы 
    intent.putExtra(Intent.EXTRA_TEXT,"cgcmd ...");   // здесь вместо ... пишутся команды
    startActivity(intent);
  }
  catch(Exception ex)   {
  }

Имена пакетов для setPackage следующие:
- "cityguide.probki.net"    для программы CityGuide (как указано в примере выше)
- "net.probki.geonet"       для программы GeoNet
- "net.probki.bgeo"         для программы bGeo

Внимание! Параметр

setType("vnd.android.cursor.item/vnd.net.probki.cityguide.cmd")

для всех программ остается неизменным.

Вызов Intent приводит к тому что навигационная программа запускается (если не была до этого запущена) и выходит на передний план. 

Команды задаются строкой как EXTRA_TEXT для Intent. Если строку не задавать, то навигационная программа просто выводится на передний план.

Командная строка должна начинаться с ключевого слова cgcmd. Если это не так, то вся строка полностью игнорируется.

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

Поддерживаются следующие команды:

delroute

Удалить текущий маршрут. Дополнительных параметров нет.

setroute <N> <lat1> <lon1> <lat2> <lon2> ...

Задать маршрут. Параметры:
<N> - количество точек маршрута. Последняя точка является финишем, остальные - промежуточными точками маршрута.
Далее следуют <N> пар "широта долгота", заданные в градусах. Например: setroute 1 60.367 30.5

view <lat> <lon> <orient> <incline> <scale>

Задать отображение карты. Параметры:
<lat> <lon> - широта и долгота точки отображения в градусах. Можно указать 0 0, тогда точка не меняется.
<orient> - поворот карты. Целочисленное значение в градусах в пределах от -360 до +360. При других значениях поворот карты не меняется.
<incline> - наклон перспективы. Целочисленное значение в градусах от 0 до 80. При отрицательном значении наклон не меняется.
<scale> - масштаб отображения. Целочисленное значение знаменателя. При значении 0 масштаб не меняется.

hide

Убрать навигационную программу с экрана в фоновый режим. Дополнительных параметров нет. Команда имеет смысл если программа находится на переднем плане.

Несколько команд можно указывать друг за другом в одной строке. Пример общей командной строки:

"cgcmd delroute setroute 1 60.367 30.5 view 60.367 30.5 361 -1 100000"

Это означает:
- Удалить имеющийся маршрут.
- Задать новый маршрут единственной точкой финиша в координатах <60.367N 30.5E>.
- Отобразить заданные координаты на экране в масштабе 1:100000, не меняя поворота карты и угла наклона.
 

  • Upvote 2

Share this post


Link to post
Share on other sites

Це дiло!

Share this post


Link to post
Share on other sites

а задать финиш (сымиторовать поиск) текстом можно?

вроде setroute /гагарина 2/ или search /гагарина 2/

Edited by Fanat_SPB

Share this post


Link to post
Share on other sites

Хм, а что делать, если такого адреса не существует? (в текущем наборе карт например)

Share this post


Link to post
Share on other sites
3 минуты назад, Vlad_SP сказал:

Хм, а что делать, если такого адреса не существует? (в текущем наборе карт например)

оставить забитым в поиске и все

[p.png

 

Edited by Fanat_SPB

Share this post


Link to post
Share on other sites
Скрытый текст

 

Исхитрись-ка мне добыть

То-Чаво-Не-Может-Быть!

Запиши себе названье,

Чтобы в спешке не забыть!

 

А не выполнишь к утру -

В порошок тебя сотру,

Потому как твой карахтер

Мне давно не по нутру!

 

Так что неча губы дуть,

А давай скорее в путь!

Государственное дело -

Ты ухватываешь суть?

 

(с)

 

 

Share this post


Link to post
Share on other sites
55 минут назад, Fanat_SPB сказал:

оставить забитым в поиске и все

Толя, а кто искать-то должен? Запустить СГ и выполнить поиск? С какими параметрами (рядом, на карте, в регионе...)? А кто формировать-то запрос будет? А не проще этому формирователю обратиться к известным источникам информации и отдать в СГ уже координаты командами view или setroute?

Share this post


Link to post
Share on other sites

Here Maps (we go) прекрасно справляется с адресом гуглоконтакта в текстовом виде.

и даже если адрес записан как "хз", то находит фирменный магазин Хз заря на проспекте Стачек

Share this post


Link to post
Share on other sites

Начнём с простого: что такое API, для чего оно существует и в какую сторону работает?

Share this post


Link to post
Share on other sites

В API ситигида есть задать координаты. Почему бы не добавить задать текст поиску ситигида? Вот и весь мой вопрос.

Share this post


Link to post
Share on other sites

Еще бы для завершения СГ команду

  • Upvote 2

Share this post


Link to post
Share on other sites

Поиска по ситигидовской базе, повторяю я вопрос из выше? О каком поиске речь? О сквозном? С какими параметрами?

Только что, v_shutoff сказал:

Еще бы для завершения СГ команду

Во! Это действительно полезно!

Share this post


Link to post
Share on other sites
34 минуты назад, Fanat_SPB сказал:

Почему бы не добавить задать текст поиску ситигида? Вот и весь мой вопрос.

А Дима говорит - зачем доверять поиск Ситигиду (в котором поиска нет ©), если можно найти в том, где поиск есть, и заслать сразу координаты.

  • Upvote 2

Share this post


Link to post
Share on other sites

Толя, намекаю ещё раз. API -- оно для обращения к СГ из внешней программы. Из которой сперва можно обратиться к нормальной поисковой системе, а потом вызвать СГ с координатами.

  • Upvote 1

Share this post


Link to post
Share on other sites

Вот это круто! А команды вызова голосового поиска нет? Список команд не планируете расширять?


 

Edited by 4e6yPaToP1981

Share this post


Link to post
Share on other sites
Вот это круто! А команды вызова голосового поиска нет? Список команд не планируете расширять?



Пока не планируем, кроме, возможно, завершения программы.

Отправлено с моего HTC One_M8 через Tapatalk

Share this post


Link to post
Share on other sites

Если я не являюсь разработчиком собственных андроидных приложений, то мне данный API бесполезен ? 

Share this post


Link to post
Share on other sites

Ну в общем да...

Share this post


Link to post
Share on other sites

и из нужных мне программ нет не одной с открытым кодом то совершенно бесполезен......

Share this post


Link to post
Share on other sites
Толя, а кто искать-то должен? Запустить СГ и выполнить поиск? А не проще этому формирователю обратиться к известным источникам информации и отдать в СГ уже координаты командами view или setroute?

Ну, тут могу поспорить, т.к. на наших картах месторасположения адреса в СитиГИД и в "известных источниках информации" может значительно отличаться.
Так что я ЗА такую возможность!


Отправлено с моего Redmi Note 3 через Tapatalk

  • Upvote 1

Share this post


Link to post
Share on other sites
2 часа назад, Udjine сказал:


... т.к. на наших картах месторасположения адреса в СитиГИД и в "известных источниках информации" может значительно отличаться...
 

А конкретные примеры можно? Я могу предположить, что разница может быть в том смысле, что один источник информации дает условную середину дома (или придомовой-междомовой территории) без учета общедоступных путей подъезда, а другой источник это учитывает, но это не имеет принципиального значения для думающего человека. Как и где удобнее запарковаться у нужного тебе объекта, всё равно приходится решать самому на месте - никакая навигационная программа (в обозримом будущем) не сможет помочь в этом смысле. Так что, алгоритм - нашел в поисковике, что нужно и передал в качестве финиша в СГ - считаю оптимальным на данном этапе.

.

Share this post


Link to post
Share on other sites

Ребята, ну вы прям сегодняшние. Примеров - масса. Во первых, гугл знает не всё, особенно в небольших городах, типа таких, как я живу. Во вторых, даже если он и знает, то часто место расположения адреса отличается на дом-два, а то и квартал, если говорить о частном секторе. ПОИ вообще зачастую может не быть, или они на фонарь выставляются, могут быть и за 500 метров от реального месторасположения, даже не по той улице, а где-то в дебрях.
Так тогда по вашему получается - чтоб нормально приехать куда-то, используя СитиГИД, мне что, надо параллельно поправлять карты гугл? Смысл тогда вообще в использовании СитиГида..
Ну и в третьих - если СитиГИД завел "не туда" - так это будет неточность карт СитиГида, о которых пользователь будет сообщать производителям карт, а не в гугл. А пока искать в "открытых источниках информации".
Если хочется КОНКРЕТНЫХ примеров, так я без труда набросаю полсотни только по моему Светловодску как по адресу, так и по ПОИ.

Отправлено с моего Redmi Note 3 через Tapatalk


  • Upvote 1

Share this post


Link to post
Share on other sites

еще очень пригодились бы команды для изменения масштаба

Share this post


Link to post
Share on other sites

Изменения чем? Внешним приложением???

Share this post


Link to post
Share on other sites

Да из внешнего приложения.

Это поможет при использовании клавиатуры или какого-либо другого внешнего устройства, пульта, джойстика и т.п.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×