OpenLayers: Управление видимостью подписей
Добавлено: 25 янв 2011, 11:50
Часто возникает задача скрывать подписи объектов на одном диапазоне масштабов и показывать на другом.
В простейшем случае, когда нужно отображать подписи объектов вне зависимости от масштаба, в качестве свойства label объекта класса OpenLayers.Style задается одно из полей подписываемого слоя. Пример:
Когда же нужно, скрывать подписи на определенном масштабе (в общем - если требуется каким-то образом вычислять значения параметров стиля, в зависимости от каких-то величин (например, от текущего масштаба)), то в качестве значения свойства label задается некоторая функция:
Данная функция (getLabel в нашем случае) определяется внутри параметра context второй группы параметров объекта OpenLayers.Style. Итоговый результат будет выглядеть следующим образом:
В простейшем случае, когда нужно отображать подписи объектов вне зависимости от масштаба, в качестве свойства label объекта класса OpenLayers.Style задается одно из полей подписываемого слоя. Пример:
Код: Выделить всё
var regionStyle = new OpenLayers.Style({
strokeWidth: 1,
label: "${name}",
fontFamily: "arial",
fontSize: "10pt",
fontWeight: "bold"
}
Код: Выделить всё
var regionStyle = new OpenLayers.Style({
strokeWidth: 1,
label: "${getLabel}",
fontFamily: "arial",
fontSize: "10pt",
fontWeight: "bold"
}
Код: Выделить всё
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 '';
}
}
}});