[mapguide-users] working with selections ...

Paul Spencer pspencer at dmsolutions.ca
Tue Aug 15 11:14:51 EDT 2006


More on this.  My code does work against a different layer/feature  
source.  The difference is that the feature source that does not work  
has a key based on a combination of two fields.  Is anyone aware of a  
problem in MapGuide with this setup?

Cheers

Paul


On 15-Aug-06, at 8:34 AM, Paul Spencer wrote:

> Andy, I am refreshing the map.  I'm not using the standard mapFrame  
> stuff, although I traced that code to see how it works and it isn't  
> substantially different from my code.  Except that it round-trips  
> with the selection ... the selection is turned into xml on the  
> server, sent to the client which calls SetSelectionXML which calls  
> the server (setselection.php) to actually save the selection into  
> the map.  It does this to accomodate the dwf viewer which doesn't  
> need to call the server to highlight the selection I believe.
>
> Cheers
>
> Paul
>
> On 14-Aug-06, at 6:03 PM, Andy Morsell wrote:
>
>> Hi Paul,
>> Are you refreshing the map somehow?  You will not see the  
>> selection until
>> this occurs via an API call back to the server.  In some almost  
>> identical
>> code of mine, I use a JavaScript function to call SetSelectionXML  
>> in the
>> mapFrame.  Or, a call to ZoomToView in the mapFrame also works  
>> since it has
>> to redraw the map and will include the new selection object.
>>
>> I hope this helps.
>>
>>
>> Andy Morsell, P.E.
>> Spatial Integrators, Inc.
>> http://www.SpatialGIS.com
>>
>> -----Original Message-----
>> From: Paul Spencer [mailto:pspencer at dmsolutions.ca]
>> Sent: Monday, August 14, 2006 2:46 PM
>> To: users at mapguide.osgeo.org
>> Subject: [mapguide-users] working with selections ...
>>
>> All,
>>
>> I've been pulling what little hair I have left out of my head over  
>> this!
>>
>> I would like to create a selection in the map using the PHP API.
>>
>> I have the following code:
>>
>> $map = new MgMap();
>> $map->Open($resourceService, $mapName);
>> $layerObj = $map->GetLayers()->GetItem($layerName);
>> $featureResId = new MgResourceIdentifier($layerObj- 
>> >GetFeatureSourceId
>> ());
>> $featureGeometryName = $layerObj->GetFeatureGeometryName();
>> $class = $layerObj->GetFeatureClassName(); $queryOptions = new
>> MgFeatureQueryOptions(); $queryOptions->SetFilter($filter);
>> $wktRW = new MgWktReaderWriter();
>> $geom = $wktRW->Read($spatialFilter);
>> $queryOptions->SetSpatialFilter($featureGeometryName, $geom,
>> MgFeatureSpatialOperations::Inside);
>> $featureReader = $featureService->SelectFeatures($featureResId,
>> $class, $queryOptions);
>> $selection = new MgSelection($map);
>> $selection->AddFeatures($layerObj, $featureReader, 0);
>> $selection->Save($resourceService, $mapName);
>>
>> If I add this ...
>>
>> echo countFeatures($featureReader);
>> function countFeatures($featureReader) {
>>      $i = 0;
>>      while ($featureReader->ReadNext()) {
>>          $i++;
>>      }
>>
>>      return $i;
>> }
>>
>> it tells me that I have the appropriate number of features in the  
>> feature
>> reader (for the geom and attribute filter chosen) ... in my test  
>> cases, it
>> was over 7000 features so I limited it spatially to about 200 ...  
>> but I
>> don't leave this in because it consumes the features and nothing  
>> gets added
>> to the selection :)
>>
>> The problem is that after the selection is saved, I don't get  
>> anything
>> highlighted on the map.  I have another PHP script that retrieves the
>> properties of selected features.  It works if I use the mapagent  
>> to select
>> the features but it doesn't work if I use this php script ...  
>> well, it
>> reports that there is one layer with a selection but no features  
>> on it.
>>
>> The problem occurs if I use just a basic filter, just a spatial  
>> filter, or
>> both combined.  It also occurs regardless of the number of  
>> features selected
>> from 1 to the full 7000+.
>>
>> I also tried using my second php script inline to read the  
>> selection info
>> and no joy.  The script that reads the selection info looks like:
>>
>> $layers = $selection->GetLayers();
>> $layer = $layers->GetItem(0); //yes there is one layer in the result
>> $layerClassName = $layer->GetFeatureClassName(); $selectionString =
>> $selection->GenerateFilter($layer, $layerClassName);  
>> $layerFeatureId =
>> $layer->GetFeatureSourceId(); $layerFeatureResource = new
>> MgResourceIdentifier($layerFeatureId);
>> $queryOptions->SetFilter($selectionString);
>> $featureReader = $featureService->SelectFeatures  
>> ($layerFeatureResource,
>> $layerClassName, $queryOptions); //... etc etc etc
>>
>> The feature class name is the same in both cases.  The filter seems
>> appropriate.
>>
>> I am obviously missing something here but I cannot see what it  
>> is.  I did
>> try saving the $map as well, with no obvious change.  Or is it a  
>> bug?  Oh, I
>> also tried saving the selection as XML and creating a new  
>> selection and
>> initializing it from the XML but that didn't seem to change  
>> anything either.
>>
>> Cheers
>>
>> Paul
>>
>> +-----------------------------------------------------------------+
>> |Paul Spencer                           pspencer at dmsolutions.ca   |
>> +-----------------------------------------------------------------+
>> |Applications & Software Development                              |
>> |DM Solutions Group Inc                 http://www.dmsolutions.ca/|
>> +-----------------------------------------------------------------+
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe at mapguide.osgeo.org
>> For additional commands, e-mail: users-help at mapguide.osgeo.org
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe at mapguide.osgeo.org
>> For additional commands, e-mail: users-help at mapguide.osgeo.org
>>
>
> +-----------------------------------------------------------------+
> |Paul Spencer                           pspencer at dmsolutions.ca   |
> +-----------------------------------------------------------------+
> |Applications & Software Development                              |
> |DM Solutions Group Inc                 http://www.dmsolutions.ca/|
> +-----------------------------------------------------------------+
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe at mapguide.osgeo.org
> For additional commands, e-mail: users-help at mapguide.osgeo.org
>

+-----------------------------------------------------------------+
|Paul Spencer                           pspencer at dmsolutions.ca   |
+-----------------------------------------------------------------+
|Applications & Software Development                              |
|DM Solutions Group Inc                 http://www.dmsolutions.ca/|
+-----------------------------------------------------------------+








More information about the Mapguide-users mailing list