Чего вы хотите?
Модератор: Tolik
Re: Чего вы хотите?
Здрасте еще раз )
to feya:
Очень хочется Яндекс.Пробок )))
есть практически готовый zmp-файл слоя пробок.
пока что для Москвы и области.
есть проблема.
в скрипте нужно получить Unix TimeStamp, а там даже функций для работы с TDateTime нет (((
пока таймштамп подставляю вручную - все работает отлично.
таймштамп действует несколько минут. потом яндекс дает отлупы.
еще что хотелось бы для подобных слоев в настройки карт:
- параметр "всегда качать карту из инета" (инфа о пробках ведь постоянно обновляется)
- параметр "не выводить сообщение [такого изображения нет на сервере]" - яндекс не генерит картинки там где пробок нет.
но самое главное - как получить таймштамп!
to feya:
Очень хочется Яндекс.Пробок )))
есть практически готовый zmp-файл слоя пробок.
пока что для Москвы и области.
есть проблема.
в скрипте нужно получить Unix TimeStamp, а там даже функций для работы с TDateTime нет (((
пока таймштамп подставляю вручную - все работает отлично.
таймштамп действует несколько минут. потом яндекс дает отлупы.
еще что хотелось бы для подобных слоев в настройки карт:
- параметр "всегда качать карту из инета" (инфа о пробках ведь постоянно обновляется)
- параметр "не выводить сообщение [такого изображения нет на сервере]" - яндекс не генерит картинки там где пробок нет.
но самое главное - как получить таймштамп!
Re: Чего вы хотите?
P.S. Если чо, на паскакале таймштамп получается приблизительно так:
Код: Выделить всё
function GetUTS: Longint;
begin
result := trunc((now - 25569.0) * 86400);
end;
- svp
- Советчик
- Сообщения: 447
- Зарегистрирован: 26 авг 2008, 11:14
- Откуда: Белгород
- Благодарил (а): 2 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Чего вы хотите?
dsd_corp писал(а):еще что хотелось бы для подобных слоев в настройки карт:
А ещё хотелось бы параметр, который определял бы время истечения актуальности тайла. Снимки облачности, например, могут оставаться актуальными, например, несколько часов.
Для яндекс пробок можно поставить несколько минут. Решение качать/не качать можно принимать опираясь на дату создания файла. Кроме того у параметра должно работать значение 0 (то есть качать каждый раз с сайта; и "-1", то есть снимки актуальны всегда, поэтому однажды их закачав уже не перекачивать).
Re: Чего вы хотите?
svp писал(а):А ещё хотелось бы параметр, который определял бы время истечения актуальности тайла. Снимки облачности, например, могут оставаться актуальными, например, несколько часов.
Для яндекс пробок можно поставить несколько минут.
тут похоже есть еще одна закавыка... у яндекса актуальность по-другому определяется. таймштампами. я пока не разобрался до конца, но похоже, что яндексу для каждой карты пробок(мск, питер и т.п.) таймштамп нужно сначала отпарсить с какого-то урла. т.е. там не любое число прокатывает. они (таймштампы) обновляются там раз в 3-10 минут. ну около того.
Re: Чего вы хотите?
Разобрался с таймштампами. Актуальные для городов берутся отсюда(это для Питера): http://traffic.maps.yandex.net/500/04/last/traffic.js
В результатепосле парсинга получается вот это: http://cs.911.ru/traffic/yatraf.php
теперь вопрос к feya: можно ли эти данные получить внутри скрипта формирования URL тайла (GetUrlScript.txt)?
при чем желательно, чтобы url-источники дергались не чаще чем раз в пару-тройку минут(ибо нафик надо для каждого тайла одно и то же тащить)?
В результатепосле парсинга получается вот это: http://cs.911.ru/traffic/yatraf.php
теперь вопрос к feya: можно ли эти данные получить внутри скрипта формирования URL тайла (GetUrlScript.txt)?
при чем желательно, чтобы url-источники дергались не чаще чем раз в пару-тройку минут(ибо нафик надо для каждого тайла одно и то же тащить)?
Re: Чего вы хотите?
feya писал(а):dsd_corp
Без доработки нельзя.
ну вообще-то я и имел ввиду с доработкой конечно же.
в том смысле что - возьмешься или "нуевонафик"?
например можно в паскаль-скрипт добавить функцию GetYaTrafTimeStamp(map_id: integer)
и чтобы она реально скачивала и парсила вышеописанный файл только при первом вызове или если с момента предыдущего вызова прошло 3 или 5 минут(это можно вынести в настройки), в остальных случаях выдавала бы сохраненный результат от предыдущего скачивания.
при чем чтобы парсила только файл, относящийся к запрошенной map_id, а не все 4 файла за раз(для каждого из городов).
так экономнее. а то мало ли. если чел в данный момент смотрит только москву, нафик качать еще для питера, ебурга и киева...
соответственно понятно куда в URL map_id подставлять:
http://traffic.maps.yandex.net/2000/04/last/traffic.js - Москва
http://traffic.maps.yandex.net/500/04/last/traffic.js - Питер
http://traffic.maps.yandex.net/700/04/last/traffic.js - Ебург
http://traffic.maps.yandex.net/1600/04/last/traffic.js - Киев
А тут то что у меня уже есть:
настройки для слоя пробок:
GetUrlScript.txt
Код: Выделить всё
var
cx, cy, _z, cz, mn, ts, map_id: integer;
ts_2000, ts_500, ts_700, ts_1600: integer;
begin
ts_2000:=1236273533; //Москва
ts_500:=1236273658; //Санкт-Петербург
ts_700:=1236273607; //Екатеринбург
ts_1600:=1236273622; //Киев
ts:=0;
map_id:=0;
cz:=24-GetZ;
_z:=cz+8;
mn:=round(intpower(2,_z));
cx:=GetX*mn;
cy:=GetY*mn;
if ((cx>1283457024)and(cx<1308622848)and(cy>654311424)and(cy<679477248)) then begin
map_id:=2000;
ts:=ts_2000;
end else if ((cx>1224736768)and(cx<1275068416)and(cy>603979776)and(cy<637534208)) then begin
map_id:=500;
ts:=ts_500;
end else if ((cx>1433927680)and(cx<1436549120)and(cy>660078592)and(cy<662700032)) then begin
map_id:=700;
ts:=ts_700;
end else if ((cx>1254096896)and(cx<1257766912)and(cy>724566016)and(cy<728236032)) then begin
map_id:=1600;
ts:=ts_1600;
end;
ResultURL:=GetURLBase+inttostr(map_id)+'?layer=4×tamp='+inttostr(ts)+'&x='+inttostr(cx)+'&y='+inttostr(cy)+'&scale='+inttostr(cz)+'&mn='+inttostr(mn);
end.
params.txt
Код: Выделить всё
[PARAMS]
GUID={C32B96AD-3AC5-4170-ADD7-47B2222AFC99}
asLayer=1
name=Пробки (Яндекс.Карты)
name_9=Traffic (Yandex.Maps)
NameInCache=yatraf
DefURLBase=http://traffic.maps.yandex.net/tiles/
ContentType=image/png
ParentSubMenu=
Ext=.png
projection=2
sradiusa=6378137
sradiusb=6356752
separator=0
UseDwn=1
Usestick=1
UseGenPrevious=0
Usedel=1
Usesave=1
UseAntiBan=0
Sleep=0
DefHotKey=0
BanIfLen=0
собственно готовый файл: http://cs.911.ru/traffic/YaTraf.zmp (GUID я ему сгенерил, а слизывал формат с яндекс-гибрида)
если отсюда( http://cs.911.ru/traffic/yatraf_htm.php ) сходу скопировать все 4 строчки в соответствующее место в GetUrlScript.txt внутри zmp-файла и сразу же открыть программу, можно увидеть пробки во всех четырех городах )))
немного глючит по краям областей пробок(за пределами городов), но это потому что крайние координаты городов я приблизительно проставил.
P.S. извините, если не туда запостил. просто чтоб рядом с обсуждением было )
- Parasite
- Администратор
- Сообщения: 5646
- Зарегистрирован: 23 окт 2008, 17:38
- Благодарил (а): 124 раза
- Поблагодарили: 508 раз
Re: Чего вы хотите?
dsd_corp писал(а):при чем желательно, чтобы url-источники дергались не чаще чем раз в пару-тройку минут(ибо нафик надо для каждого тайла одно и то же тащить)?
Не совсем понятен сам смысл кэширования Планетой постоянно изменяющихся карт. Может мне кто-то разжует более доходчиво?
The only difference between me and a mad man is that I am not mad. /Salvador Dali/


- svp
- Советчик
- Сообщения: 447
- Зарегистрирован: 26 авг 2008, 11:14
- Откуда: Белгород
- Благодарил (а): 2 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Чего вы хотите?
Parasite писал(а):Не совсем понятен сам смысл кэширования Планетой постоянно изменяющихся карт
Например для скорости. Если карты живут несколько минут или несколько часов, то почему бы тайлы не закешировать. Тем более что определить возраст тайла не сложно даже из скрипта.
dsd_corp писал(а):например можно в паскаль-скрипт добавить функцию GetYaTrafTimeStamp(map_id: integer)
Можно в скрипт добавить функцию, например, HTTPGet(url, timeout), которая бы брала что-то с указанного URL'а и помещала в строку. А строку можно парсить из того же скрипта.
Также в скрипт помжно ввести глобальный контекст. Чтобы между разными срабатываниеми скрипта значения переменных этого глобального контекста не обнулялись.
Получается вопрос стоит не в том, чтобы сделать конкретную примочку у яндексу, а в том, чтобы сделать расширение функционала, доступного через скрипты. Это гораздо полезнее.
dsd_corp писал(а):P.S. извините, если не туда запостил. просто чтоб рядом с обсуждением было )
Сделайте отдельную тему про яндекс-пробки, а модераторы перенесут туда обсуждение и поставят на неё ссылки.