Клуб API Карт

php-приложения от twirl для создания слоя активных областей

Пост в архиве.

Здравствуйте.

Использую это приложение для создания слоя активных областей. Таких слоев у меня несколько (с разным кол-ом меток). Раз в сутки этот так называемый кеш слоев мне нужно перестраивать.

Так вот если я запускаю это приложение один раз, то все прекрасно, но если мне необходимо его запустить в цикле, то первый слой строиться, а последующие содержат в себе только файл "styles.js".

Есть предположение, что приложение запускается следующим образом:

 

Application::get()->run($options);

-----

//Application.class.php

class Applicattion(){

...

/**

         * Инстанция приложения

         */

        private static $instance = NULL;

public static function get () {

            if (! self::$instance) {

                self::$instance = new self;

            }

            return self::$instance;

        }

private function __construct () {}

        private function __clone() {}

...

}

 

6 комментариев
Sergey Konstantinov
28 января 2016, 07:02
Какие-нибудь ошибки при выполнении происходят?
Приведите, пожалуйста, код запуска Application::get()->run($options) в цикле.
в принципе есть готовая обертка для hsТайлера по созданию слоев по некому списку.
Постараюсь раскопать.
Вопрос решен.
Бился 3 дня над ним.

Добавляем метод в TileMaker.class.php

public static function reset() {
            self::$queue = array();
            self::$hotspots = array();
            self::$options = array();
            self::$zoom = 0;
            self::$styleNumber = 0;
            self::$styles = array();
        }

и дописываем в этом классе метод:

        public static function makeTiles ($json, $options) {
            self::reset();
            // Готовим массив активных областей в виде объектов IHotspot
            self::$hotspots = HotspotMaker::makeHotspots($json);
            self::$options = $options;
            // В очереди находятся объекты вида array($tile, $indexes)
            // $tile - номер тайла, $indexes - индексы активных областей,
            // которые могут лежаь в этом тайле. Изначально в очередь помещается
            // тайл (0, 0) и индексы всех активных областей.
            self::$queue[] = array(new Point(0, 0), array_keys(self::$hotspots));
            self::processQueue();
            // Сохраняем все стили в отдельный js-файл
            self::saveStyles(self::$options['directory'] . '/' . self::$options['stylesFile']);
        } 
Спасибо за ответы.

Здравствуйте, у вас пхп скрипты остались а то их на сервере заменет 404((( Буду вам очень признатеелен

Sergey Konstantinov
28 января 2016, 07:02

php-скрипты никуда не делись, они тут: https://github.com/twirl/hsTiler

Переехала страничка с примерами, теперь она здесь: http://api.yandex.ru/maps/jsapi/doc/mod/tasks/how-to-use-twirl-util.xml