[mapguide-users] Adding a temporary Layer in MapGuide

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Wed Jan 21 05:24:19 EST 2009


Yes, just insert points instead of the buffer feature.

Regards, Kenneth Skovhede, GEOGRAF A/S



Carmelo Saffioti skrev:
> Thank you for your reply Kenneth.
> Trying examples on DevGuideSamples I discovered how to work with the 
> Task Pane...
>
> Now I need to draw dynamically on the map points of known x,y 
> coordinates, after clicking on the appropriate Task item. I hope this 
> can be done with the buffer script you suggested me. Isn't it?
>
>
> Cheers
> Carmelo
>
>
> ----- Original Message ----- From: "Kenneth Skovhede, GEOGRAF A/S" 
> <ks at geograf.dk>
> To: "MapGuide Users Mail List" <mapguide-users at lists.osgeo.org>
> Sent: Wednesday, January 21, 2009 9:04 AM
> Subject: Re: [mapguide-users] Adding a temporary Layer in MapGuide
>
>
>> I have not used the AJAX viewer enough to know how to do this with 
>> tasks.
>> The values can be read from the viewer through some property functions:
>>
>> http://mapguide.osgeo.org/files/mapguide/docs/2.0/viewerapi.html#mapframe_getsessionid 
>>
>> http://mapguide.osgeo.org/files/mapguide/docs/2.0/viewerapi.html#mapframe_getmapname 
>>
>>
>> With those, you can manually pass them to the request, if you use the 
>> "InvokeScript" method,
>> but there may be an easier way.
>>
>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>
>>
>>
>> Carmelo Saffioti skrev:
>>> Thank you for your help!
>>> I'm seeing that the code you posted is very similar to the buffer 
>>> code, however I'm really new to MapGuide, so I hope you can help me 
>>> understanding how to make it work.
>>>
>>> I created a Layout, using MapGuide Studio, on which I added a new 
>>> custom command for the Task panel, named "Route tracing". Therefore 
>>> I created the route_tracing.jsp file, on which I'm trying to use 
>>> your code (translating it from PHP to JSP) or the buffer.jsp code 
>>> (which is already in JSP).
>>>
>>> On both your code and buffer.jsp there is this code:
>>> mapName = GetParameter(request, "MAPNAME");
>>> sessionId = GetParameter(request, "SESSION");
>>>
>>> - The question is: how can I pass the MAPNAME and SESSION values to 
>>> the web page?
>>>
>>> The final result should be a web page, which opens when its Action 
>>> Task item is clicked, on which I can select and digit some options. 
>>> After clicking a button the page should get these values, and 
>>> display the map with the calculated additional layer on it.
>>>
>>>
>>>
>>> I hope you can help me about that
>>> Cheers
>>> Carmelo
>>>
>>>
>>>
>>> ----- Original Message ----- From: "Arnaud De Groof" 
>>> <Arnaud.DeGroof at spacebel.be>
>>> To: "MapGuide Users Mail List" <mapguide-users at lists.osgeo.org>
>>> Sent: Monday, January 12, 2009 4:18 PM
>>> Subject: RE: [mapguide-users] Adding a temporary Layer in MapGuide
>>>
>>>
>>> The first code :
>>> <?php
>>>
>>> // Vital includes.
>>>
>>> include "../../mapviewerphp/constants.php";
>>>
>>> include "../../mapviewerphp/common.php";
>>>
>>>
>>>
>>>
>>>
>>> $args = ($_SERVER['REQUEST_METHOD'] == "POST") ? $_POST : $_GET;
>>>
>>> $sessionId = $args['SESSION'];
>>>
>>> $mapName = $args['MAPNAME'];
>>>
>>> $layerName1 = 'YYY';
>>>
>>> $rlLayerResourceId = "Library://XXX/$layerName1.LayerDefinition";
>>>
>>>
>>>
>>> InitializeWebTier();
>>>
>>>
>>>
>>> $userInfo = new MgUserInformation($sessionId);
>>>
>>> $siteConnection = new MgSiteConnection();
>>>
>>> $siteConnection->Open($userInfo);
>>>
>>> $resourceService =
>>> $siteConnection->CreateService(MgServiceType::ResourceService);
>>>
>>>
>>>
>>> // Read the MapDefinition into an XML DOM document object.
>>>
>>> $md = " Library://XXX/$mapName.MapDefinition "; // TODO Constant!
>>>
>>> $mdResourceId = new MgResourceIdentifier($md);
>>>
>>> $mdReader = $resourceService->GetResourceContent($mdResourceId);
>>>
>>> $mdXml = $mdReader->ToString();
>>>
>>> $mdDomDoc = DOMDocument::loadXML($mdXml);
>>>
>>>
>>>
>>> // Add a new MapLayer
>>>
>>> $targetNode = $mdDomDoc->getElementsByTagName("MapLayer")->item(0);
>>>
>>> $newNode = $targetNode->parentNode->insertBefore(new
>>> DOMElement("MapLayer"), $targetNode);
>>>
>>> $newNode->appendChild($mdDomDoc->createElement("Name", $layerName1));
>>>
>>> $newNode->appendChild($mdDomDoc->createElement("ResourceId",
>>> $rlLayerResourceId));
>>>
>>> $newNode->appendChild($mdDomDoc->createElement("Selectable", "false"));
>>>
>>> $newNode->appendChild($mdDomDoc->createElement("ShowInLegend",
>>> "false"));
>>>
>>> $newNode->appendChild($mdDomDoc->createElement("LegendLabel"));
>>>
>>> $newNode->appendChild($mdDomDoc->createElement("ExpandInLegend",
>>> "false"));
>>>
>>> $newNode->appendChild($mdDomDoc->createElement("Visible", "true"));
>>>
>>> $newNode->appendChild($mdDomDoc->createElement("Group"));
>>>
>>>
>>>
>>> // Save the updated MapDefinition
>>>
>>> $updatedXml = $mdDomDoc->saveXML();
>>>
>>> $byteSource = new MgByteSource($updatedXml, strlen($updatedXml));
>>>
>>>
>>>
>>> // Create the temporary MapDefinition
>>>
>>> $sessionMapName = $mdResourceId->GetName();
>>>
>>> $sessionMapDefinition =
>>> "Session:$sessionId//$sessionMapName.MapDefinition";
>>>
>>> $sessionResourceId = new MgResourceIdentifier($sessionMapDefinition);
>>>
>>>
>>>
>>> // Write the updated MapDefinition
>>>
>>> $resourceService->SetResource($sessionResourceId,
>>> $byteSource->GetReader(), null);
>>>
>>>
>>>
>>> //Test the updated MapDefinition
>>>
>>> $md1 = "Session:$sessionId//X.MapDefinition";
>>>
>>> $mdResourceId2 = new MgResourceIdentifier($md1);
>>>
>>> $mdReader2 = $resourceService->GetResourceContent($mdResourceId2);
>>>
>>> $mdXml2 = $mdReader2->ToString();
>>>
>>> $mdDomDoc2 = DOMDocument::loadXML($mdXml2);
>>>
>>>
>>>
>>>
>>>
>>> // Read the WebLayout into an XML DOM document object.
>>>
>>> $wl = "Library://XXX/XXX.WebLayout"; // TODO Constant!
>>>
>>> $wlResourceId = new MgResourceIdentifier($wl);
>>>
>>> $wlReader = $resourceService->GetResourceContent($wlResourceId);
>>>
>>> $wlXml = $wlReader->ToString();
>>>
>>> $wlDomDoc = DOMDocument::loadXML($wlXml);
>>>
>>>
>>>
>>> // Now, update the MapDefinition.
>>>
>>> $mapdef = $wlDomDoc->getElementsByTagName("ResourceId")->item(0);
>>>
>>> $mapdef->nodeValue = "$md1";
>>>
>>>
>>>
>>> // Prepare the updated XML to be written out to the session.
>>>
>>> $wlupdatedXml = $wlDomDoc->saveXML();
>>>
>>> $wlbyteSource = new MgByteSource($wlupdatedXml, strlen($wlupdatedXml));
>>>
>>>
>>>
>>> // Create a temporary WebLayout
>>>
>>> $wlsessionMapName = $wlResourceId->GetName();
>>>
>>> $wlsessionWebLayout = 
>>> "Session:$sessionId//$wlsessionMapName.WebLayout";
>>>
>>> $wlsessionResourceId = new MgResourceIdentifier($wlsessionWebLayout);
>>>
>>>
>>>
>>> // Write the updated WebLayout to the session.
>>>
>>> $resourceService->SetResource($wlsessionResourceId,
>>> $wlbyteSource->GetReader(), null);
>>>
>>>
>>>
>>> // Redirect to the Ajax viewer.
>>>
>>> $redirectTo =
>>> "mapguide/mapviewerajax/?SESSION=$sessionId&WEBLAYOUT=$wlsessionWebLayou 
>>>
>>> t";
>>>
>>> $host = $_SERVER["HTTP_HOST"];
>>>
>>> $url = "http://$host/$redirectTo";
>>>
>>>
>>>
>>> //Test
>>>
>>> $f = 'test.txt';
>>>
>>> $handle = fopen($f,"w");
>>>
>>> fwrite($handle, "test1:<".$mdXml.">\r\ntest 2 
>>> :<".$updatedXml.">\r\ntest
>>> 3 :<".$wlXml.">\r\ntest 4 :<".$wlupdatedXml.">\r\ntest 5 :<".$url.">");
>>>
>>> fclose($handle);
>>>
>>>
>>>
>>> // Redirect!
>>>
>>> header("Location: $url");
>>>
>>> exit;
>>>
>>>
>>>
>>> ?>
>>>
>>> ___________________________________________________________________________________ 
>>>
>>> E-MAIL DISCLAIMER
>>>
>>> The present message may contain confidential and/or legally 
>>> privileged information.
>>> If you are not the intended addressee and in case of a transmission 
>>> error,
>>> please notify the sender immediately and destroy this E-mail.
>>> Disclosure, reproduction or distribution of this document and its 
>>> possible
>>> attachments is strictly forbidden.
>>>
>>> SPACEBEL denies all liability for incomplete, improper, inaccurate, 
>>> intercepted,
>>> (partly) destroyed, lost and/or belated transmission of the current 
>>> information
>>> given that unencrypted electronic transmission cannot currently be 
>>> guaranteed
>>> to be secure or error free. Upon request or in conformity with 
>>> formal, contractual
>>> agreements, an originally signed hard copy will be sent to you to 
>>> confirm
>>> the information contained in this E-mail.
>>>
>>> SPACEBEL denies all liability where E-mail is used for private use.
>>>
>>> SPACEBEL cannot be held responsible for possible viruses that might 
>>> corrupt this
>>> message and/or your computer system.
>>> ____________________________________________________________________________________ 
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> mapguide-users mailing list
>>> mapguide-users at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>> _______________________________________________
>>> mapguide-users mailing list
>>> mapguide-users at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>> _______________________________________________
>> mapguide-users mailing list
>> mapguide-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapguide-users 
>
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users


More information about the mapguide-users mailing list