[mapguide-users] Response text error in Getting layer properties
Zac Spitzer
zac.spitzer at gmail.com
Fri Mar 26 05:08:44 EDT 2010
the screen shot is illegeible (and its firday and i can;t spel)?
On 26 March 2010 20:00, padmini godavarthi <godavarthi.padmini at gmail.com> wrote:
>
>
> Hi,
> iam doing zoom to feature function in php .i have taken the query sample
> code from phpviewersample(querymain.php,querycontroller.php ,query.php)
> but iam unable to get the layer properties in the drop down list. it shows
> the following error while tracking the code at
> alert(reqHandler.responseText);
>
>
> my code was:
>
> in zoommain.php the code was
>
> <?php
> require_once '../utilityfunctions.php';
> require_once '../JSON.php';
> require_once 'classes/zoom1.php';
> $args = ($_SERVER['REQUEST_METHOD'] == "POST") ? $_POST : $_GET;
> $errorMsg = null;
> $errorDetail = null;
> try
> {
> MgInitializeWebTier($configFilePath);
> $query = new Query($args);
> $layerNames = $query->GetMapLayerNames();
> }
> catch (MgException $mge)
> {
> $errorMsg = $mge->GetMessage();
> $errorDetail = $mge->GetDetails();
> echo $errorMsg;
> echo $errorDetail;
> }
> catch (Exception $e)
> {
> $errorMsg = $e->GetMessage();
> echo $errorMsg;
> }
> ?>
> <html>
> <head>
> <title>Zoom Features</title>
> <link rel="stylesheet" href="../styles/gt.css" type="text/css">
> <script language="javascript"
> src="../../viewerfiles/browserdetect.js"></script>
> <script language="javascript" src="../json.js"></script>
> <script language="javascript">
> var READY_STATE_UNINITIALIZED = 0;
> var READY_STATE_LOADING = 1;
> var READY_STATE_LOADED = 2;
> var READY_STATE_INTERACTIVE = 3;
> var READY_STATE_COMPLETE = 4;
> var NOT_BUSY_IMAGE = "../images/loader_inactive.gif";
> var BUSY_IMAGE = "../images/loader_pulse.gif";
>
> var session = '<?= $args['SESSION'] ?>';
> var mapName = 'map';
> var reqHandler = null;
> var properties = null;
> function OnLayerChange()
> {
> var layerSelect = document.getElementById("layerSelect");
> var propertySelect = document.getElementById("propertySelect");
> var valueSelect = document.getElementById("valueSelect");
> reqParams = "COMMAND=GETLAYERPROPERTIES";
> reqParams += "&SESSION=" + encodeURIComponent(session);
> reqParams += "&MAPNAME=" + encodeURIComponent(mapName);
> reqParams += "&LAYERNAME=" + encodeURIComponent(layerSelect.value);
> if (msie)
> reqHandler = new ActiveXObject("Microsoft.XMLHTTP");
> else
> reqHandler = new XMLHttpRequest();
> reqHandler.open("POST", "zoomcontroller1.php", false);
> reqHandler.setRequestHeader("Content-Type",
> "application/x-www-form-urlencoded");
> reqHandler.send(reqParams);
> alert(reqHandler.responseText);
> properties = reqHandler.responseText.parseJSON();
> propertySelect.options.length = 0;
> for (var i = 0; i < properties.length; i++)
> {
> propertySelect.options[i] = new Option(properties[i].name, i, false,
> false);
>
> }
> OnPropertyChange();
> }
> function OnPropertyChange()
> {
> var propertySelect =
> document.getElementById("propertySelect");
>
> if (propertySelect.selectedIndex >= 0)
> {
> alert("hiiproperty");
> }
>
> }
>
> function OnLoad()
> {
> OnLayerChange();
>
> }
> </script>
>
> </head>
> <body onLoad="OnLoad();" marginwidth=5 marginheight=5 leftmargin=5
> topmargin=5 bottommargin=5 rightmargin=5>
> <?php if ($errorMsg == null) { ?>
> <table class="RegText" border="0" cellspacing="0" width="100%">
> <tr><td class="Title"> ../images/loader_inactive.gif Zoom
> Features<hr></td></tr>
> <tr><td class="SubTitle">Select a Layer</td></tr>
> <tr><td>Layer:</td></tr>
> <tr>
> <td class="RegText">
> <select size="1" class="Ctrl" id="layerSelect" onChange="OnLayerChange()"
> style="width: 100%">
> <?php
> $selected = 'selected';
> foreach($layerNames as $layerName => $layerLabel) {
> ?>
> <option value="<?= $layerName ?>" <?=$selected ?> ><?= $layerLabel
> ?></option>
> <?php
> $selected = '';
> }
> ?>
> </select>
> </td>
> </tr>
>
> <tr><td>Property:</td></tr>
> <tr>
> <td class="RegText">
> <select size="1" class="Ctrl" id="propertySelect"
> onChange="OnPropertyChange()" style="width: 100%">
> </select>
> </td>
> </tr>
>
> <tr><td>Value:</td></tr>
> <tr>
> <td class="RegText">
>
> <select size="1" class="Ctrl" id="valueSelect" style="width: 100%">
> </select>
>
> </td>
> </tr>
> <tr><td class="Spacer"></td></tr>
> <tr>
> <td>
> <input class="Ctrl" id="zoomBtn" type="button" value="Zoom"
> style="width:60px">
> <input class="Ctrl" id="selectBtn" type="button" value="Select"
> style="width:60px">
> </td>
> </tr>
>
> </table>
>
> <?php } else { ?>
>
> <table class="RegText" border="0" cellspacing="0" width="100%%">
> <tr><td class="Title">Error<hr></td></tr>
> <tr><td><?= $errorMsg ?></td></tr>
> <tr><td><?= $errorDetail ?></td></tr>
> </table>
>
> <?php } ?>
>
> </body>
>
> </html>
>
> in zoomcontroller1.php as the code is same as quercontroller.php except
> require_once 'classes/query.php'; is replaced with require_once
> 'classes/zoom1.php';
>
> and in zoom1.php the code was..
>
> function GetMapLayerNames()
> {
> $layerNames = array();
>
> $resourceService =
> $this->site->CreateService(MgServiceType::ResourceService);
>
> $map = new MgMap();
> $map->Open($resourceService, 'map');
> $layers = $map->GetLayers();
>
> for ($i = 0; $i < $layers->GetCount(); $i++)
> {
> $layer = $layers->GetItem($i);
>
> if((substr($layer->GetName(), 0, 1) != "_") &&
> (substr(strtoupper($layer->GetFeatureSourceId()), 0, 7) != "SESSION"))
> {
> $layerNames[$layer->GetName()] =
> $layer->GetLegendLabel();
> }
> }
> asort($layerNames);
>
> return $layerNames;
> }
> function GetLayerProperties()
> {
> $properties = array();
>
> $resourceService =
> $this->site->CreateService(MgServiceType::ResourceService);
>
> $map = new MgMap();
> $map->Open($resourceService, 'map');
> $layer = $map->GetLayers()->GetItem('layer');
>
> $featureService =
> $this->site->CreateService(MgServiceType::FeatureService);
> $resId = new MgResourceIdentifier($layer->GetFeatureSourceId());
> $schemaClass = explode(':', $layer->GetFeatureClassName());
> try
> {
>
> $classDef = $featureService->GetClassDefinition($resId,
> $schemaClass[0], $schemaClass[1]);
>
> for ($i = 0; $i < $classDef->GetProperties()->GetCount(); $i++)
> {
> $propertyDef = $classDef->GetProperties()->GetItem($i);
>
> if ($propertyDef->GetPropertyType() ==
> MgFeaturePropertyType::DataProperty)
> {
> $dataType = $propertyDef->GetDataType();
> if ($this->IsValidDataType($dataType))
> {
> array_push($properties, new
> Property($propertyDef->GetName(), $dataType == MgPropertyType::String));
> }
> }
> }
> }
> catch (MgException $mge)
> {
> $errorMsg = $mge->GetMessage();
> $errorDetail = $mge->GetDetails();
> echo $errorMsg;
> echo $errorDetail;
> }
>
> return $properties;
> }
> i think iam passing the parameters correctly...
> if anybody aware of that please let me know??
>
> http://n2.nabble.com/file/n4802751/error.jpg
> --
> View this message in context: http://n2.nabble.com/Response-text-error-in-Getting-layer-properties-tp4802751p4802751.html
> Sent from the MapGuide Users mailing list archive at Nabble.com.
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>
--
Zac Spitzer
Solution Architect / Director
Ennoble Consultancy Australia
http://www.ennoble.com.au
http://zacster.blogspot.com
+61 405 847 168
More information about the mapguide-users
mailing list