[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