OpenLayers: Управление видимостью подписей

Решенные задачи, первая запись - описание решения.
Ответить
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3366
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 511
Ваше звание: Author
Контактная информация:

OpenLayers: Управление видимостью подписей

Сообщение Denis Rykov » 25 янв 2011, 11:50

Часто возникает задача скрывать подписи объектов на одном диапазоне масштабов и показывать на другом.

В простейшем случае, когда нужно отображать подписи объектов вне зависимости от масштаба, в качестве свойства label объекта класса OpenLayers.Style задается одно из полей подписываемого слоя. Пример:

Код: Выделить всё

var regionStyle = new OpenLayers.Style({
    strokeWidth: 1,
    label: "${name}",
    fontFamily: "arial",
    fontSize: "10pt",
    fontWeight: "bold"
}
Когда же нужно, скрывать подписи на определенном масштабе (в общем - если требуется каким-то образом вычислять значения параметров стиля, в зависимости от каких-то величин (например, от текущего масштаба)), то в качестве значения свойства label задается некоторая функция:

Код: Выделить всё

var regionStyle = new OpenLayers.Style({
    strokeWidth: 1,
    label: "${getLabel}",
    fontFamily: "arial",
    fontSize: "10pt",
    fontWeight: "bold"
}
Данная функция (getLabel в нашем случае) определяется внутри параметра context второй группы параметров объекта OpenLayers.Style. Итоговый результат будет выглядеть следующим образом:

Код: Выделить всё

var regionStyle = new OpenLayers.Style({
    strokeWidth: 1,
    label: "${getLabel}",
    fontFamily: "arial",
    fontSize: "10pt",
    fontWeight: "bold"
},
{context: {
    getLabel: function(feature) {
        if (feature.layer.map.getZoom() >= 9) {
            return feature.attributes.name;
         }
         else {
             return '';
         }
    }
}});
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

Вернуться в «Рецепты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость