Hi, I've taken this a little further. Firebug gives me the following error:
Error: There must be exactly one feature in the set. This comes from setselection.php, and in particular the lines if($queryInfo) { //Query feature info for the feature in the selection set. This will return the current set //along with property info //There must be only one feature in the feature set $layers = $sel->GetLayers(); if($layers == null || $layers->GetCount() != 1) { echo "Error: There must be exactly one feature in the set."; ///NOXLATE dbg report only return; } (rather than the other instance of this error in that file). I know that the test polygon I am trying to select comprises one feature, and that I am using a unique id so I can't see how there can be more than one feature selected... Thanks Jo Jo Cook wrote: > > Hi Rodolfo, > > I'm actually using a shapefile for my test implementation (as my > postgresql/postgis setup is version 8.4/1.4 which the fdo provider doesn't > like). The field I am using to make the selection is a unique integer- > should that be enough? > Thanks > > Jo > > Rodolfo Moreno wrote: >> >> Hi Jo, >> I thinks that your problem is with your database. does your table >> containing the geometries have primary key and spatial indexs? >> >> regards, >> >> >> Jo Cook wrote: >>> >>> Dear All, >>> >>> I have the fairly common problem of wanting to pick a feature from a >>> database and have the map automatically zoom to the correct location and >>> highlight the feature. I am doing this in php and javascript (MGOS 2.1 >>> with bundled apache configuration), following some extremely helpful >>> code snippets I found in the forum. Thanks! >>> >>> I have now got stuck at the point where a lot of other people seem to >>> get stuck, namely that the map zooms to the correct location and shows >>> in the status bar that one feature is selected, but the feature doesn't >>> show up as highlighted. I understand, from trawling the forum, that I >>> need to save and refresh in order to highlight the feature. >>> >>> The only problem is that I have tried many combinations of map save and >>> selection save, and have looked in the api documentation, and tried >>> figuring out where in my code it needs to go, and nothing seems to work, >>> and now I'm horribly confused as to which of these I am supposed to be >>> using. Am I saving a selection, or saving a map? >>> >>> This is the relevant section of php: >>> >>> $resourceSrvc = >>> $siteConn->CreateService(MgServiceType::ResourceService); >>> $map = new MgMap(); >>> $resId = new >>> MgResourceIdentifier("Library://maps/map1.MapDefinition"); >>> $mapName = $resId->GetName(); >>> $map->Create($resourceSrvc, $resId, $mapName); >>> >>> >>> $layers = $map->GetLayers(); >>> $selLayer = $layers->GetItem($SMAlayer); >>> $featureResourceId = new >>> MgResourceIdentifier($selLayer->GetFeatureSourceId()); >>> $featureClassName = $selLayer->GetFeatureClassName(); >>> >>> >>> $filter = "site_code = '$SMAlocation'"; >>> >>> $queryOptions = new MgFeatureQueryOptions(); >>> $queryOptions->SetFilter($filter); >>> >>> $featureSrvc = >>> $siteConn->CreateService(MgServiceType::FeatureService); >>> $featureReader = $featureSrvc->SelectFeatures($featureResourceId, >>> $featureClassName, $queryOptions); >>> >>> $selection = new MgSelection($map); >>> $selection->AddFeatures($selLayer, $featureReader, 1); >>> $selectionXml = $selection->ToXml(); >>> $selection->Save($resourceSrvc, $mapName); >>> >>> Then this is the javascript >>> >>> <SCRIPT LANGUAGE="JavaScript"> >>> >>> var initTimer; >>> >>> function InitDocument() >>> { >>> //wait for map to be fully initialized >>> //then call the initial function >>> initTimer = setInterval(DelayedInit, 200); >>> >>> } >>> >>> function DelayedInit() { >>> try { >>> if(parent.ViewerFrame.mapFrame.mapInit) { >>> clearInterval(initTimer); >>> parent.ViewerFrame.mapFrame.ZoomToView(<?php echo $centerX; >>> ?>, <?php echo $centerY; ?>, 2000, true); >>> var selectionXml = '<?php echo $selectionXml; ?>'; >>> >>> parent.ViewerFrame.mapFrame.SetSelectionXML(selectionXml); >>> parent.ViewerFrame.mapFrame.ExecuteMapAction(1); >>> parent.ViewerFrame.mapFrame.Refresh(); >>> >>> } >>> } >>> catch(e) {} >>> } >>> >>> </SCRIPT> >>> >>> </HEAD> >>> >>> <BODY onLoad="InitDocument()"> >>> >>> >>> </BODY> >>> </HTML> >>> >>> >>> This doesn't work, but doesn't seem to throw up any errors. Any help >>> would be very much appreciated! To reiterate, I have searched the >>> documentation and forums, but remain confused... >>> >>> Thanks >>> >>> Jo >>> -- >>> ----------------------------------------------------- >>> Joanne Cook >>> Senior IT Support and Development >>> Oxford Archaeology (North) >>> 01524 880212 >>> http://thehumanjourney.net >>> >>> >>> ------ >>> Files attached to this email may be in ISO 26300 format (OASIS Open >>> Document Format). If you have difficulty opening them, please visit >>> http://iso26300.info for more information. >>> >>> _______________________________________________ >>> mapguide-users mailing list >>> mapguide-users@lists.osgeo.org >>> http://lists.osgeo.org/mailman/listinfo/mapguide-users >>> >>> >> >> > > -- View this message in context: http://n2.nabble.com/Highlight-selections-problem-tp3398199p3404846.html Sent from the MapGuide Users mailing list archive at Nabble.com. _______________________________________________ mapguide-users mailing list mapguide-users@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/mapguide-users