Склеенные запросы
Последнее изменение: 02/06/2020 13:36:32Склеенным, называется запрос вида:
http://kh.google.com/flatfile?f1-002-i.280+f1-012-i.212+q2-0-q.281&v=1
В приведенном запросе объединены 3 файла: f1-002-i.280, f1-012-i.212, q2-0-q.281. Данный запрос эквивалентен 3-м одиночным запросам:
http://kh.google.com/flatfile?f1-002-i.280 http://kh.google.com/flatfile?f1-012-i.212 http://kh.google.com/flatfile?q2-0-q.281
Количество тайлов в склеенном запросе может быть разным: от 4 в бесплатной версии клиента, и до 10 в версии Pro.
Структура ответа
В ответ на такие запросы клиента, сервер выдаёт ответы-контейнеры следующей структуры:
- type
- TSplited = record
- Magic : Byte; // идентификатор = $01
- Count : Byte; // количество тайлов в контейнере
- Offset : array of LongWord; // смещение от начала контейнера до n-го тайла
- Data : array of byte; // n тайлов, следующие друг за другом
- end;
Размеры тайлов определяются как:
- if i = Length(Offset) - 1 then // для последнего тайла из контейнера
- Size[i] := SplitedTileSize - Offset[i] // SplitedTileSize - размер контейнера
- else // для всех, кроме последнего
- Size[i] := Offset[i+1] - Offset[i];
В случае, если какой-либо тайл на сервере отсутствует, его смещение в контейнере (Offset) указывается равным смещению следующего тайла (т.е. указывается что размер данного тайла равен нулю). И даже, если все запрошенные тайлы отсутствуют, сервер ответит контейнером в котором будут только служебные данные со смещениями для всех тайлов равными размеру контейнера.