Слой Яндекс.Пробки

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модераторы: Tolik, zed

Слой Яндекс.Пробки

Сообщение dsd_corp » 17 мар 2009, 18:04

Всем привет.
Недавно в ветке "Чего вы хотите?" было обсуждение сабжа.
По просьбам трудящихся создаю новую тему и скомпилирую результаты предыдущих обсуждений сюда.

Итак, вот что у нас уже есть. Первое сообщение данной ветки (этот пост) будет регулярно обновляться.

настройки для слоя пробок:
GetUrlScript.txt
Код: Выделить всё
function retrieve_ts(url: string; xstart: string; xend: string):integer; external 'ytrf_retrieve_ts@maps\YaTraf.dll stdcall';
function GetIntParam(key: string): Integer; external 'ytrf_GetIntParam@maps\YaTraf.dll stdcall';
function SetIntParam(key: string; val: Integer): integer; external 'ytrf_SetIntParam@maps\YaTraf.dll stdcall';
function GetUTS: Longint; external 'ytrf_GetUTS@maps\YaTraf.dll stdcall';

function ts_update_needed(delta: integer):integer;
var
  lts, ts : integer;
  lts_key: string;
begin
  result:=0;
  lts_key:='ytrf_lts';
  lts:=GetIntParam(lts_key);
  ts:=GetUTS;
  if (ts>lts+delta) then begin
    SetIntParam(lts_key, GetUTS);
    result:=1;
  end;
end;

function get_ts(delta: integer):integer;
var
  ts_key, url, data: string;
  pt : LongInt;
begin
result:=0;
ts_key:='ytrf_ts';
if (ts_update_needed(delta)>0) then begin
   url:='http://trf.maps.yandex.net/trf/stat.js';
   result:=retrieve_ts(url, 'timestamp:"', '"');
   SetIntParam(ts_key, result);
end else begin
   result:=GetIntParam(ts_key);
end;
end;

begin
ResultURL:='';
if (GetZ<>0) then ResultURL:=GetURLBase+inttostr(GetX)+'&y='+inttostr(GetY)+'&z='+inttostr(GetZ-1)+'&tm='+inttostr(get_ts(60));
end.


params.txt
Код: Выделить всё
[PARAMS]
GUID={C32B96AD-3AC5-4170-ADD7-47B2222AFC99}
asLayer=1
name=Пробки (Яндекс.Карты)
name_9=Traffic (Yandex.Maps)
NameInCache=yatraf
DefURLBase=http://trf.maps.yandex.net/tiles?l=trf&x=
ContentType=image/png
ParentSubMenu=
Ext=.png
projection=2
sradiusa=6378137
sradiusb=6356752
separator=0
UseDwn=1
Usestick=0
UseGenPrevious=0
Usedel=1
Usesave=0
UseAntiBan=0
Sleep=0
DefHotKey=54
BanIfLen=0
DelAfterShow=1

собственно готовый zmp-файл: http://cs.911.ru/traffic/YaTraf.zmp (GUID я ему сгенерил, а слизывал формат с яндекс-гибрида)
для работы слоя необходима внешняя библиотека дополнительных функций.
Скомпилированную библиотеку можно скачать тут: http://cs.911.ru/traffic/YaTraf.dll
Этот файл нужно бросить в папку maps, то есть туда же, где лежат zmp-файлы.

исходники библиотеки(для параноиков и просто интересующихся :D ):
Последний раз редактировалось dsd_corp 16 окт 2009, 10:15, всего редактировалось 3 раз(а).
dsd_corp
Новичок
 
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Слой Яндекс.Пробки

Сообщение Papazol » 21 ноя 2010, 20:55

Работать-то работает, но как-то странно. Если удалить вручную все папки из кэша yatraf, то новые пробки скачаются. Однако последующее обновление информации не происходит, так как файлы из кэша не удаляются (хотя DelAfterShow=1).
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Re: Слой Яндекс.Пробки

Сообщение Papazol » 28 янв 2011, 13:42

На крайней версии программы пробки не работают, так как ранее написанные средства отображения пробок сейчас не используются.
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Re: Слой Яндекс.Пробки

Сообщение Papazol » 28 янв 2011, 17:45

Придумал скрипты, помогающие обновлять пробки. Есть два варианта: по горячей клавише и по кнопке на экране. Первый вариант удобней при использовании ноутбука. Горячая клавиша - F8. Второй вариант удобнее при использовани тачскрина. Кнопка специально сделана крупной, чтобы попадать было проще. Экзешники нужно положить в папку с SAS.Планетой. По нажатию горячей/экранной кнопки происходит удаление всех папок кэша Яндекс.Пробок, затем эмулируется небольшое движение карты для обновления экрана. Вскоре после этого скачиваются новые тайлы.

Вот ещё один вариант: полностью автоматическое обновление. Каждую минуту.

Добавлена установка таймаута через ini-файл. Таймаут указывается в миллисекундах!
Вложения
YaTraf_Auto.ZIP
(287.55 KiB) Скачиваний: 59
YaTraf_HotKey.ZIP
(287.6 KiB) Скачиваний: 64
YaTraf.ZIP
(288.19 KiB) Скачиваний: 61
Последний раз редактировалось Papazol 28 янв 2011, 19:27, всего редактировалось 1 раз.

За это сообщение автора Papazol поблагодарил:
BustEd (21 окт 2011, 11:10)
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Re: Слой Яндекс.Пробки

Сообщение AlexxFFC » 28 янв 2011, 19:07

Papazol
спасибо, это выход на текущий момент!

Только хотел предложить сделать автообновление, смотрю, а уже появился третий вариант ;)
Авто - это как раз то, что и нужно!

Только пару вопросов:
1) может добавить настройку времени 1-2-3-5 минут перед обновлением?
2) при обновлении SAS.Планета получает фокус и всплывает поверх окон - это можно исправить, пусть висит в фоне и обновляется?

з.ы.: потестировал немного и обратил внимание, что качается много трафика. похоже вместе с пробками, т.е. слоем, обновляется и карта. хотя она вся выкачана. SAS.Планета в строке состояния пишет, какие файлы скачиваются, и они из \cache\yamapng\

з.з.ы.: много я тут нафлудил :P в общем, качаются все пробки, как я понял, по всем доступным городам, вот из-за чего столько трафика тратится. за 5 минут работы - 30 мб. Дома то пофиг, а вот в пути с нетбука, через дорогой gprs (
AlexxFFC
Новичок
 
Сообщения: 2
Зарегистрирован: 27 янв 2011, 21:11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Слой Яндекс.Пробки

Сообщение Papazol » 28 янв 2011, 19:25

Выбор таймаута для обновления можно сделать через ini-файл. Это будет быстро и понятно. А вот с переводом фокуса... Двигать карту приходится, чтобы обновить экран. Другого способа нет. А двигать можно только либо мышью, либо стрелками. В любом случае фокус на этом окне. Единственное, что несколько успокаивает, это то, что при движении на автомобиле с включенным приёмником карта будет двигаться сама, без нашего вмешательства.
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Re: Слой Яндекс.Пробки

Сообщение Papazol » 28 янв 2011, 19:50

AlexxFFC писал(а):потестировал немного и обратил внимание, что качается много трафика. похоже вместе с пробками, т.е. слоем, обновляется и карта. хотя она вся выкачана. SAS.Планета в строке состояния пишет, какие файлы скачиваются, и они из \cache\yamapng\

...в общем, качаются все пробки, как я понял, по всем доступным городам, вот из-за чего столько трафика тратится. за 5 минут работы - 30 мб. Дома то пофиг, а вот в пути с нетбука, через дорогой gprs (

Нет, это не так. Карта не скачивается именно потому, что установлен режим "Интернет и кэш" (у Вас-то так?), а в кэше тайлы есть. В строке состояния программа не показывает, какие именно тайлы она скачивает, а лишь название тайла основной карты, на котором в данный момент стоит указатель. И по пробкам тоже: качаются лишь те тайлы, которые видны на экране плюс некоторое количество за границами экрана. Хотя в установках у меня стоит "Кол-во тайлов отображаемых за границей экрана" = 0, всё равно скачивается больше, чем занимает экран. Но только не по всем доступным городам!
Специально проверил: стою на 15-м зуме, при обновлении пробок программа показывает, что скачано 40 файлов, которые занимают 565,9 кБ. Иду в Total Commander, беру папку yatraf и смотрю свойства: файлов 40, всего 565 кБ. Всё соответствует.
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Re: Слой Яндекс.Пробки

Сообщение AlexxFFC » 28 янв 2011, 20:34

Papazol, да, настройки у меня такие же и источник "кэш и интернет".
Вот запускаю, сделал окошко Планеты примерно 1024х768 размером, центр поставил на пересечение МКАД и Можайкого ш-се, зум 15.
Пробки обновились - скачалось 1.8 Мб. В проводнике проверил - в самом деле 1.8 Мб... Не многовато? При этом скачивается 200 тайлов (это же их количество пишется рядом с объемом?).
AlexxFFC
Новичок
 
Сообщения: 2
Зарегистрирован: 27 янв 2011, 21:11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Слой Яндекс.Пробки

Сообщение Papazol » 29 янв 2011, 00:23

Тут где-то либо на форуме, либо в багтрекере обсуждалось, как программа считает, сколько ей надо загрузить. И выяснилось, что количество загружаемых тайлов не зависит от размера окна программы, а лишь от установленного разрешения дисплея. От зума тоже не зависит, так как на экране умещается одинаковое количество тайлов при любом зуме. Как я уже писАл, при однократной закачке (то есть в пределах одного экрана) пробок скачалось 40 файлов общим размером около 600 кБ, то есть в среднем один файл весит 15 кБ, что вполне правдоподобно. Если же скачивается 200 файлов, значит, установлено гораздо бОльшее количество отображаемых за пределами экрана тайлов. Проверьте. И ещё проверьте, если есть возможность, какие запросы посылает программа. Я проверял, только на тайлы пробок и никакие другие.
Изображение
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Re: Слой Яндекс.Пробки

Сообщение slazar » 29 янв 2011, 12:32

Подскажите пожалуйста, перестали загружаться Яндекс пробки, на одном компе грузятся а на другом пишит, "такого изображения нет на сервере", что могло случится?
slazar
Новичок
 
Сообщения: 4
Зарегистрирован: 29 янв 2011, 11:54
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Слой Яндекс.Пробки

Сообщение Papazol » 29 янв 2011, 13:27

Значит, разные адреса запросов на этих компах. Скопируйте zmp с того, который грузит, на другой.
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

Пред.След.

Вернуться в SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12