Клуб API Карт

Вопрос по активным областям API 2

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

Ломаю голову как переписать код под новый апи, был

    function processTemplate(template, tile, zoom) {
        return template.replace(/%x/ig, tile.getX()).replace(/%y/ig, tile.getY()).replace(/%z/ig, zoom);
    }

    // Источник тайлов с изображениями
    var ds = new YMaps.TileDataSource('tiles/png/%z/tile-%x-%y.png', 1, 0);
    ds.getTileUrl = function (tileNumber, zoom) {
        return processTemplate(
        YMaps.TileDataSource.prototype.getTileUrl.call(this, tileNumber, zoom),
        tileNumber,
        zoom
    );
    };
    // Добавляет "картиночный" слой на карту
    var pLayer = new this.ymaps.Layer(ds);

    // Источник тайлов с описаниями активных областей
    var os = new YMaps.Hotspots.ObjectSource('tiles/js/%z/tile-%x-%y.js', 'ObjInf-%x-%y-%z');
    os.getTileUrl = function (tileNumber, zoom) {
        return processTemplate(
        YMaps.Hotspots.ObjectSource.prototype.getTileUrl.call(this, tileNumber, zoom),
        tileNumber,
        zoom
    );
    };
    os.getKey = function (tileNumber, zoom) {
        return processTemplate(
        YMaps.Hotspots.ObjectSource.prototype.getKey.call(this, tileNumber, zoom),
        tileNumber,
        zoom
    );
    };
    // Добавляет слой активных областей на карту
    var hLayer = new YMaps.Hotspots.Layer(os);

 

далее просто добавлял оба слоя на карту и все, как сейчас будет выглядеть этот код?

8 комментариев

// Картиночный слой

var imageLayer = new ymaps.Layer('tiles/png/%z/tile-%x-%y.png', {tileTransparent: true});

map.layers.add(imageLayer);

 

// Хотспотный слой

var hotspotObjectSource = new ymaps.hotspot.ObjectSource('tiles/js/%z/tile-%x-%y.js'),

     hotspotLayer = new ymaps.hotspot.Layer(hotspotObjectSource);

map.layers.add(hotspotLayer);

 

Но это клиентская часть айсберга. У нас во второй версии поменялся формат описания хотпотных данных. Так что нужно будет поменять серверную часть тоже.

а как быть с описанием? 'ObjInf-%x-%y-%z , слои добавились, только без описаний

ааа, понял что имелось ввиду, я генерю xml файл при помощи которого создаю описания вашими php скриптами, есть ли у вас пример такого файла, или где прочитать про структуру его?

 

Какой файл вы имеете в виду?

YMapsML, только вот вопрос, я переделал его структуру, прописал ключь в

 

    this.imageLayer = new ymaps.Layer('tiles/png/%z/tile-%x-%y.png', { tileTransparent: true });

    var hotspotObjectSource = new ymaps.hotspot.ObjectSource('tiles/js/%z/tile-%x-%y.js', 'ObjInf_%x_%y_%z');
    this.hotspotLayer = new ymaps.hotspot.Layer(hotspotObjectSource);

 

далее

this.map.layers.add(this.imageLayer);
this.map.layers.add(this.hotspotLayer);

 

и тем не менее, метки отображаются, а описания нет

 

Не совсем поняла - причем тут YMapsML? Это формат данных, никак не связанный с хотспотами.

я формирую файл YMapsML, затем при помощи него создаю слои картинок и описаний вашими php скриптами, ссылки не помню на них, но если нужно поищу, и далее уже наношу эти описания и тайлы на карту

Теперь поняла. Для второй версии пока не написали подобного скрипта. Так что либо придется самостоятельно его переписать под вторую версию, либо дождаться готового варианта.