Клуб API Карт

Надписи на полигоне

Пост в архиве.
Oldpunk777
5 сентября 2010, 23:45
Можно сделать на выделенном полигоне свою надпись, типа выделить область и на ней написать москва
3 комментария
Подпись можно сделать с помощью мтки со своим шаблоном.
Примерно так:

var textPlacemark = new YMaps.Placemark(map.getCenter(), {
    style : {
        iconStyle : { template : new YMaps.Template("$[name]") }
    }
});
map.addOverlay(textPlacemark);
А можно как то сделать что бы вместе с увеличением маштаба карты увеличивался и шрифт на метках?
Можно.

Для этих целей воспользуйтесь макетом (он будет немного удобнее, нежели просто текстовый шаблон):

function TextLayout (context, map, owner) {
    var text = YMaps.jQuery("");

    text.html(context.name || "");

    this.onAddToParent = function (parentNode) {
        text.appendTo(parentNode);
    };

    this.onRemoveFromParent = function () {
        text.remove();
    };

    this.update = function () {};

    this.setContent = function (content) {
        content.onAddToParent(text);
    };

    this.getOffset = function () {
        this.setFontSize();
        return new YMaps.Point(-text.width() / 2, -text.height() / 2);
    };

    this.setFontSize = function () {
        text.css("font-size", Math.pow(1.4, map.getZoom() + 4) + "px");                                                                                                          
    };
}

В макете я увеличивал размер шрифта с помощью функции возвездения в степень. Вы можете выбрать другую закономерность или функцию.

А теперь достаточно просто создать метку:

var placemark = new YMaps.Placemark(map.getCenter(), {
    style : {
        iconStyle : { template : new YMaps.LayoutTemplate(TextLayout) }
    }
});                                                                                                                                                                              
placemark.setIconContent("Метка");
map.addOverlay(placemark);