qgis-server-getlegendgraphic-scale.patch
| src/mapserver/qgswmsserver.cpp | ||
|---|---|---|
| 299 | 299 | |
| 300 | 300 |
QgsCoordinateReferenceSystem dummyCRS; |
| 301 | 301 |
QStringList layerIds = layerSet( layersList, stylesList, dummyCRS ); |
| 302 | ||
| 303 |
//read SCALE |
|
| 304 |
QMap<QString, QString>::const_iterator scale_it = mParameterMap.find( "SCALE" ); |
|
| 305 |
if ( scale_it != mParameterMap.end() ) |
|
| 306 |
{
|
|
| 307 |
//converting SCALE |
|
| 308 |
bool conversionSuccess; |
|
| 309 |
bool scaleOk = true; |
|
| 310 |
double scaleValue = scale_it.value().toDouble( &conversionSuccess ); |
|
| 311 |
if ( !conversionSuccess ) |
|
| 312 |
scaleOk = false; |
|
| 313 | ||
| 314 |
//reducing layerIds stringList |
|
| 315 |
if ( scaleOk ) |
|
| 316 |
{
|
|
| 317 |
QMap<QString, QgsMapLayer*>& layerMap = QgsMapLayerRegistry::instance()->mapLayers(); |
|
| 318 |
QStringList newLayerIds; |
|
| 319 | ||
| 320 |
foreach( QString id, layerIds ) |
|
| 321 |
{
|
|
| 322 |
QgsMapLayer *layer = layerMap.value( id, 0 ); |
|
| 323 |
if ( layer->hasScaleBasedVisibility() ) {
|
|
| 324 |
if ( layer->minimumScale() <= scaleValue && |
|
| 325 |
layer->maximumScale() >= scaleValue ) |
|
| 326 |
newLayerIds.push_front( layer->id() ); |
|
| 327 |
} else {
|
|
| 328 |
newLayerIds.push_front( layer->id() ); |
|
| 329 |
} |
|
| 330 |
} |
|
| 331 |
layerIds = newLayerIds; |
|
| 332 |
} |
|
| 333 |
} |
|
| 334 | ||
| 335 | ||
| 302 | 336 |
QgsLegendModel legendModel; |
| 303 | 337 |
legendModel.setLayerSet( layerIds ); |
| 304 | 338 | |
| 305 |
- |
|