[mapguide-users] FW: Problem with programatic changes of layers

Zac Spitzer zac.spitzer at ennoble.com.au
Wed Jun 2 01:59:37 EDT 2010


The normal procedure here would be to

1. copying the runtime map into your session
2. modify the runtime map
3. then launch the viewer using the session url for your runtime map

is that what your doing?

z

On 2 June 2010 15:19, VOLZ Mark (FN) <Mark.Volz at ergon.com.au> wrote:
>
> ________________________________
> From: VOLZ Mark (FN)
> Sent: Wednesday, 2 June 2010 2:21 PM
> To: 'mapguide-internals at lists.osgeo.org'
> Subject: Problem with programatic changes of layers
>
> Folks,
>
> I'm using the MGE 2010 (using a basic web layout) and I am having some
> problems when I modifiy a layer via a piece of php (and I'm not getting much
> joy from ADSK).
>
> The scenerio;
>
> 1) From another app the user launches a mapguide session via a url call
> which contains a unique id for the particualar piece of plant they wish to
> view i.e.
> http://<server_name>/mapguide2010/feederstat/navnet-switchzone.php?ParentId=60005615
> 2) The navnet-switchzone.php creates and logs into a mapguide session.
> 3) This page then calls another page passing the ParentID, session id, &
> mapname variables.
> 4) The second page has 2 functions firstly to set a layer filter and
> secondly to make that layer invisible in the layer legend.
> 5) The first page then zooms to the extents as calculated via an mbr query
> on Oracle spatial.
>
> Simple enough.
>
> My problem is the second action of the second php page i.e. setting the
> layer to invisible in the layer legend. It does do it after the user
> performs a zoom or pan command but it is in the layer legend when the page
> first loads which I don't want.
>
> Things I have tried;
>
> 1) Adding the layer to the library map with the filter set to -1 and turning
> off the layer legend visiblity. - no luck
> 2) doing a second zoom when the page is first loaded i.e. log into the
> seession zoom to a scale of (truescale * 1.1) modify the layer then zoom to
> true scale. - no luck
> 3)  After page loads running the ForceRefresh() command
>
> Any ideas?
>
> Below is the code i am using to modify the layer.
>
> Any help would be greatly appreciated.
>
> Mark
>
> // change  HV_isol_dev_parent layer
>  $resId = new
> MgResourceIdentifier('Library://FeederStat/Layers/HV_isol_dev_parent.LayerDefinition');
>  $byteReader = $resourceService->GetResourceContent($resId);
>  $layerXML = $byteReader->ToString();
>  $doc = DOMDocument::loadXML($layerXML);
>  $GridNode = $doc->getElementsByTagName('GridLayerDefinitionType');
>  $FilterNode = $doc->getElementsByTagName('Filter');
>  $FilterNode->item(0)->nodeValue = "ECORP_ASSET_ID = ".$parentId;
>
>  $LayerDefinition = $doc->saveXML();
>  $byteSource = new MgByteSource($LayerDefinition, strlen($LayerDefinition));
>  $byteSource->SetMimeType(MgMimeType::Xml);
>
>  $layerName="HV_isol_dev_parent";
>  $sessionLayer = "Session:".$sessionId."//".$layerName.".LayerDefinition";
>  $sessResId = new  MgResourceIdentifier($sessionLayer);
>  $resourceService->SetResource($sessResId, $byteSource->GetReader(),  null);
>
>  $newLayer = new MgLayer($sessResId,$resourceService);
>  $newLayer->SetName($layerName);
>  $newLayer->SetVisible(true);
>  $newLayer->SetLegendLabel($layerName);
>  $newLayer->SetDisplayInLegend(false);
>
>  $layerCollection = $map->GetLayers();
>  $layerCount = $layerCollection->GetCount();
>  $modelLayerIndex = $layerCount-2;
>  if ($layerCollection->Contains("HV_isol_dev_parent"))
>  {
>     $selLayerIndex = $layerCollection->IndexOf("HV_isol_dev_parent");
>     $modelLayerIndex = $selLayerIndex;
>     $layerCollection->RemoveAt($selLayerIndex);
>  }
>  // Add Model layer to collection
>  if (! $layerCollection->Contains($layerName))
>   {
>   $layerCollection->Insert($modelLayerIndex,$newLayer);
>   // $layerCollection->Insert($layerCount-2,$newLayer);
>   }
>
>
>
>
> *************************************************************************
> This e-mail (including any attachments) may contain confidential or
> privileged information and is intended for the sole use of the person(s) to
> whom it is addressed. If you are not the intended recipient, or the person
> responsible for delivering this message to the intended recipient, please
> notify the sender of the message or send an e-mail to
> mailto:help.desk at ergon.com.au immediately, and delete all copies. Any
> unauthorised review, use, alteration, disclosure or distribution of this
> e-mail by an unintended recipient is prohibited. Ergon Energy accepts no
> responsibility for the content of any e-mail sent by an employee which is of
> a personal nature.
>
> Ergon Energy Corporation Limited      ABN 50 087 646 062
> *************************************************************************
>
> _______________________________________________
> 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