[mapguide-users] MGOS 4 Final Release and GetLayers

Gordon Luckett gordon.luckett at arrowgeomatics.com
Fri May 29 06:26:36 PDT 2026


It sounds like the Session or MapName is incorrect in that case.

I would try a test page (like above).


On Fri, May 29, 2026 at 9:03 AM David Bowen <dbowenrci at gmail.com> wrote:

> Thanks Gordon. I tried commenting out the suggested line and it still
> fails. When I run the following, $numberLayers comes back as 0:
>
>             $sel = new MgSelection( $this->map );
>             $sel->Open($this->resourceService,$mgMapID);
>             $selLayers = $sel->GetLayers();
>             $numberLayers = $selLayers->GetCount();
>
> When I run the same script on the environment that has CodeIgniter still
> installed, I get a result of 1. I'm not quite sure what's causing the issue
> since the script looks similar between the two environments.
>
> Any suggestions?
>
> On Thu, May 28, 2026 at 11:47 AM Gordon Luckett <
> gordon.luckett at arrowgeomatics.com> wrote:
>
>> Perhaps this line is causing the issue?
>>
>> $this->originalSel = $sel->ToXml();
>>
>> I've just tested the GetLayers() and they work well.
>>
>> (after lauching from an InvokeURL in the Flexible Web Layout)
>> $configFilePath = "C:\Program Files\OSGeo\MapGuide\Web\www\webconfig.ini";
>> $mgSessionId = ($_SERVER['REQUEST_METHOD'] == "POST")? $_POST['session']:
>> $_GET['session'];
>> $mapName = ($_SERVER['REQUEST_METHOD'] == "POST")? $_POST['mapname']:
>> $_GET['mapname'];
>> MgInitializeWebTier($cofigFilePath);
>> $userInfo = new MgUserInformation($mgSessionId);
>> $siteConnection = new MgSiteConnection();
>> $siteConnection->Open($userInfo);
>> $resourceService = $siteConnection->CreateService(0);
>> $featureService = $siteConnection->CreateService(2);
>> $queryOptions = new MgFeatureQueryOptions();
>>
>> $map = new MgMap($siteConnection);
>> $map->Open($mapName);
>>         $selection = new MgSelection($map);
>> $selection->Open($resourceService, $mapName);
>>         $selectedLayers = $selection->GetLayers();
>>       for ($i = 0; $i < $numberLayers; $i++)
>>         {
>>            $layer = $selectedLayers->GetItem($i);
>>            $layerName = $layer->GetName();
>>           echo $layerName . '<br>';
>>       }
>>
>> Works well.
>>
>> gordon
>>
>>
>> On Thu, May 28, 2026 at 11:27 AM David Bowen <dbowenrci at gmail.com> wrote:
>>
>>> Hello Gordon,
>>>
>>> Let me know if the following is what you're looking for. The script
>>> calls the class Mg_initialize,, with the relevant sections below.
>>>
>>> init gets called when the class SelectionTools first gets initiated. the
>>> function getMap gets called in the line you called out.
>>>
>>> function init( $MapName, $SessionId ) {
>>>         $webconfig_ini ="PATH/OSGeo/MapGuide/Web/www/webconfig.ini";
>>>         $mgMapID = $MapName;
>>>         $mgSessionId = $SessionId;
>>>
>>>         try {
>>>             MgInitializeWebTier( $webconfig_ini );
>>>             $userInfo = new MgUserInformation( $mgSessionId );
>>>             $this->siteConnection = new MgSiteConnection();
>>>             $this->siteConnection->Open( $userInfo );
>>>             $this->resourceService =
>>> $this->siteConnection->CreateService( MgServiceType::ResourceService );
>>>             $this->featureService =
>>> $this->siteConnection->CreateService( MgServiceType::FeatureService );
>>>             $this->map = new MgMap( $this->siteConnection );
>>>             $this->map->Open( $mgMapID );
>>>         } catch ( MgException $e ) {
>>>             echo $e->GetMessage();
>>>             echo $e->GetDetails();
>>>             exit();
>>>         }
>>>     }
>>>
>>> function getMap() {
>>>         return $this->map;
>>>     }
>>>
>>> On Thu, May 28, 2026 at 9:15 AM Gordon Luckett <
>>> gordon.luckett at arrowgeomatics.com> wrote:
>>>
>>>> I would be curious about the line:
>>>>
>>>> $this->MapGuideObject->getMap();
>>>>
>>>> Share this definition?
>>>>
>>>> On Mon, May 25, 2026 at 1:35 PM David Bowen via mapguide-users <
>>>> mapguide-users at lists.osgeo.org> wrote:
>>>>
>>>>> We're updating our application from using an MVC framework to being a
>>>>> PHP only application. We're getting an unexpected error when running a
>>>>> spatial query that looks for corresponding data, from a specified layer,
>>>>> that falls within a set distance of the geocoded coordinates. This
>>>>> function worked as expected in the MVC framework and the only code change,
>>>>> for this section of code, is how the MG_initialize library is loaded.
>>>>>
>>>>> Going through the function step-by-step, it appears that it's failing
>>>>> when it attempts to retrieve the layers from MapGuide. Instead of returning
>>>>> something, it's returning NULL. This triggers a Fusion error, where 1 of 2
>>>>> different error messages are displayed.
>>>>>
>>>>> The first error message is:
>>>>> Failed to retrieve message for "MgFileNotFoundException". Failed to
>>>>> retrieve message for "MgFileIoErrNo". - MgInitializeWebTier line 155 file
>>>>> C:\Workspace\mg-4.0\MgDev\Web\src\WebSupport\InitializeWebTier.cpp -
>>>>> MgInitializeWebTierInternal line 116 file
>>>>> C:\Workspace\mg-4.0\MgDev\Web\src\WebSupport\InitializeWebTier.cpp -
>>>>> MgResources.LoadResources line 388 file
>>>>> C:\Workspace\mg-4.0\MgDev\Common\Foundation\System\Resources.cpp -
>>>>> MgResources.ParseFile line 632 file
>>>>> C:\Workspace\mg-4.0\MgDev\Common\Foundation\System\Resources.cpp -
>>>>> ByteSourceFileImpl.LoadFile line 127 file
>>>>> C:\Workspace\mg-4.0\MgDev\Common\Foundation\System\ByteSourceFileImpl.cpp
>>>>>
>>>>> The second error message is:
>>>>> Fatal error: Uncaught TypeError: extract(): Argument #1 ($array) must
>>>>> be of type array, string given in PATH\map\view\page.php:116 Stack trace:
>>>>> #0 PATH\map\view\page.php(116): extract() #1
>>>>> PATH\maptools\sel_action.php(154): require_once('...') #2
>>>>> PATH\maptools\sel_action.php(56): Sel_Action->selectionReport_ql() #3
>>>>> PATH\maptools\sel_action.php(290): Sel_Action->__construct() #4 {main}
>>>>> thrown in PATH\map\view\page.php on line 116
>>>>>
>>>>> The script is:
>>>>> function __construct( $config ) {
>>>>>         $mapName = $config[ 'mapname' ];
>>>>>         $mgSessionID = $config[ 'mapsession' ];
>>>>>         $this->mgMapID = $mapName;
>>>>>         $this->mgSessionId = $mgSessionID;
>>>>>         //Initialize a MapGuide object instance
>>>>>         require_once('../library/mapguide/Mg_initialize.php');
>>>>>         $this->MapGuideObject = new Mg_initialize();
>>>>>         $this->MapGuideObject->init( $this->mgMapID,
>>>>> $this->mgSessionId );
>>>>> }
>>>>>
>>>>> function getSelection() {
>>>>> $myMap = $this->MapGuideObject->getMap();
>>>>>         $session = $this->mgSessionId;
>>>>>         $mapName = $this->mgMapID;
>>>>>         $objkeys = '';
>>>>>         $errorMsg = null;
>>>>>         $siteConnection = $this->MapGuideObject->getSiteConnection();
>>>>>         // Get an instance of the Resource and Mapping Services and
>>>>> use them to open the map and initialize a selection object.
>>>>>         $resourceSrvc = $this->MapGuideObject->getResourceService();
>>>>>         $featureSrvc = $this->MapGuideObject->getFeatureService();
>>>>>         //Get selected map layers.
>>>>>         $sel = new MgSelection( $myMap );
>>>>>         $sel->Open( $resourceSrvc, $mapName );
>>>>>         $this->originalSel = $sel->ToXml();
>>>>>         // this is where it appears to fail
>>>>>         $selLayers = $sel->GetLayers();
>>>>>
>>>>> //script continues but likely not relevant
>>>>> }
>>>>>
>>>>> Any input would be greatly appreciated.
>>>>> _______________________________________________
>>>>> mapguide-users mailing list
>>>>> mapguide-users at lists.osgeo.org
>>>>> https://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapguide-users/attachments/20260529/c93057b5/attachment.htm>


More information about the mapguide-users mailing list