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

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами 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: Слой Яндекс.Пробки

Сообщение skh » 23 дек 2012, 15:24

В режиме ИНТЕРНЕТ нормально работает
В режиме ИНТЕРНЕТ И КЭШ выдает сообщение раз в минуту обновляю пробки и ничего не обновляет.
skh
Новичок
 
Сообщения: 3
Зарегистрирован: 05 дек 2011, 12:01
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Papazol » 23 дек 2012, 17:52

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

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

Сообщение skh » 24 дек 2012, 11:16

Наверное у меня что-то с настройками. После запуска програмки, раз в секунду появляется сообщение "обновляю пробки" и ничего не обновляется (при наличии кэша). Местами (на парках) появляется сообщение "данные не обнаружены код ошибки 404".
skh
Новичок
 
Сообщения: 3
Зарегистрирован: 05 дек 2011, 12:01
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Papazol » 24 дек 2012, 21:40

Обновляться должно не раз в секунду, а раз в минуту. Слой "Яндекс.Пробки" должен быть включен. Режим должен быть "Интернет и кэш". На местах, где пробки не контролируются, тайлы слоя отсутствуют, поэтому могут быть сообщения 404. Папка с кэшем Яндекс.Пробок должна называться SASPlanet\cache\Yandex_traf. И, конечно, должен быть соответствующий zmp.
Нелишним будет сначала проверить скачиваемость пробок в принципе. Для этого нужно удалить содержимое папки с кэшем пробок, затем запустить SAS.Планету (без моей проги) и включить слой пробок. Если всё нормально, пробки скачаются и отобразятся. Но они не будут обновляться. Моя программа всего лишь удаляет кэш и обновляет экран, чтобы скачалось по-новой. Да, и если за прошедшую минуту состояние пробок не изменилось, то и картинка останется прежней.
Вложения
YandexTraf.zmp
(2.6 KiB) Скачиваний: 12
Аватара пользователя
Papazol
Гуру
 
Сообщения: 1210
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 29 раз.
Поблагодарили: 147 раз.

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

Сообщение webzbear » 29 дек 2012, 20:15

да простят меня гуру данной ветки, но все перечитывать долго .. нельзя ли обновить 1й пост с инструкцией куда пихать сие счатье и кстать ссылки устарели можно ли их заменить? спс !

пока жду ответа буду читать 8 страниц инфы в этом топе =(
Аватара пользователя
webzbear
Новичок
 
Сообщения: 1
Зарегистрирован: 21 фев 2009, 18:55
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Papazol » 29 дек 2012, 21:30

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

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

Сообщение Parasite » 29 дек 2012, 22:19

Papazol писал(а):если кому Яндекс.Пробки нужны реально, в движении, милости прошу пользовать то, что описано чуть выше

C другой стороны - ничего не мешает взять старую версию САС и использовать с ДЛЛкой. Старые версии доступны на странице скачки.
Можно даже сделать сборку "SAS.Пробки" и прилепить ее в шапку.
Для пробок возможностей старой версии вполне хватит.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

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

Сообщение Tolik » 29 дек 2012, 22:33

Кстати, уже есть МЯК для win 8: http://mobile.yandex.ru/apps/maps/windows8/
Интересно, можно ли её как-то запустить под win 7 (если лень инсталлировать 8-ку)?
Я к тому, что для просмотра пробок карта от Яндекса вполне годится.
Tolik
Гуру
 
Сообщения: 1624
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 68 раз.
Поблагодарили: 242 раз.

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

Сообщение Papazol » 30 дек 2012, 13:33

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

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

Сообщение Tolik » 30 дек 2012, 23:05

Papazol писал(а):любыми известными программами

Только МЯКа для винды не существует (только недавно появился для Вин8), а других известных мне программ и нет :(
Tolik
Гуру
 
Сообщения: 1624
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 68 раз.
Поблагодарили: 242 раз.

Пред.След.

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

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

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

cron