Tolik писал(а):Можно, это сделать и в отдельном фоновом потоке, но возникнет куча проблем
Разве? Не вижу никакой кучи проблем. Вижу только бонусы:
1. Быстрее загрузка - ну это понятно. Пока что в скрипте только определяется URL - формально нет необходимости его компилить до тех пор, пока этот URL не потребуется. Все параметры визуализации карты не хранятся в скрипте и не требуют компиляции в смысле запуска движка паскальскрипта.
2. В отдельном потоке компилить url из zmp можно даже совершенно не показывая какие-либо ошибки. Тут две крайности. Если это общая ошибка при загрузке zmp (разархивирование не сработало или ещё какой эпикфэйл) - то покуда параметры карты в zmp в виде простых параметров - ругаться сразу. А если это ошибка конкретно компиляции - достаточно взводить флаг наличия ошибки и сохранить её в лог, привязанный к карте. При переключении на "кривую" карту анализировать этот признак и отображать ошибку. В принципе даже можно пробовать перечитать zmp и перекомпилить url, это позволит исправлять простые и банальные ошибки в zmp без перезапуска всей программы.
3. Отдельный фоновый поток для компиляции не критичен. Он потребуется в том случае, если переключение на карту, совмещённое с компилированием скрипта, будет достаточно продолжительным. В этом смысле териетически возможна ситуация, что для некоторых карт это актуально, а для некоторых - нет. Так что в фоновом потоке имеет делать компиляцию и загрузку только в том случае (=тогда), если (=когда) загрузка "по требованию" (при переключении) не будет приемлема по времени.