[mapguide-commits] r6013 - trunk/MgDev/Server/src/Services/Rendering

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Jul 27 23:21:09 EDT 2011


Author: hubu
Date: 2011-07-27 20:21:09 -0700 (Wed, 27 Jul 2011)
New Revision: 6013

Modified:
   trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
Log:
Fix the ticket #1758
https://trac.osgeo.org/mapguide/ticket/1758

Modified: trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp	2011-07-28 02:13:43 UTC (rev 6012)
+++ trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp	2011-07-28 03:21:09 UTC (rev 6013)
@@ -1492,6 +1492,7 @@
             Ptr<MgCoordinateSystem> mapCs = srs.empty()? NULL : m_pCSFactory->Create(srs);
             TransformCache* item = TransformCache::GetLayerToMapTransform(transformCache, vl->GetFeatureName(), featResId, mapCs, m_pCSFactory, m_svcFeature);
             Ptr<MgCoordinateSystemTransform> trans = item? item->GetMgTransform() : NULL;
+            MgCSTrans* xformer = item? item->GetTransform() : NULL;
 
             Ptr<MgFeatureQueryOptions> options = new MgFeatureQueryOptions();
             Ptr<MgGeometricEntity> queryGeom;
@@ -1643,8 +1644,15 @@
                             extentCoords->Add(c1);
                             Ptr<MgLinearRing> extentRing = new MgLinearRing(extentCoords);
                             Ptr<MgPolygon> extentPolygon = new MgPolygon(extentRing, NULL);
-                            Ptr<MgGeometry> intersectPolygon = polygon->Intersection(extentPolygon);
 
+                            Ptr<MgGeometricEntity> QueryExtentPolygon;
+                            if (trans)
+                            {
+                                //get selection geometry in layer space
+                                QueryExtentPolygon = extentPolygon->Transform(trans);
+                            }
+                            Ptr<MgGeometry> intersectPolygon = polygon->Intersection((MgPolygon *)QueryExtentPolygon.p);
+
                             if (intersectPolygon != NULL)
                             {
                                 options->SetSpatialFilter(layer->GetFeatureGeometryName(), intersectPolygon, /*MgFeatureSpatialOperations*/selectionVariant);
@@ -1652,7 +1660,7 @@
                                 rdr = m_svcFeature->SelectFeatures(featResId, vl->GetFeatureName(), options);
                                 rsrdr.reset(new RSMgFeatureReader(rdr, m_svcFeature, featResId, options, vl->GetGeometry()));
                                 selRenderer->PointTest(true);
-                                ds.StylizeVectorLayer(vl, selRenderer, rsrdr.get(), NULL, scale, StylizeThatMany, selRenderer);
+                                ds.StylizeVectorLayer(vl, selRenderer, rsrdr.get(), xformer, scale, StylizeThatMany, selRenderer);
 
                                 // Clear the readers
                                 rdr = NULL;



More information about the mapguide-commits mailing list