[mapguide-users] MGOS 4 Final Release and GetLayers

Gordon Luckett gordon.luckett at arrowgeomatics.com
Thu May 28 08:47:25 PDT 2026


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/20260528/f054f3ce/attachment.htm>


More information about the mapguide-users mailing list