[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