Недавно в ветке "Чего вы хотите?" было обсуждение сабжа.
По просьбам трудящихся создаю новую тему и скомпилирую результаты предыдущих обсуждений сюда.
Итак, вот что у нас уже есть. Первое сообщение данной ветки (этот пост) будет регулярно обновляться.
настройки для слоя пробок:
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-файлы.
исходники библиотеки(для параноиков и просто интересующихся ):
- проект Delphi в zip: http://cs.911.ru/traffic/YaTraf_dll_src.zip (2,6 кб zip)
- модуль как html с подсветкой синтаксиса: http://cs.911.ru/traffic/uYaTraf.pas.html (34,2 кб)