[mapguide-users] Adding a temporary Layer in MapGuide

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Thu Jan 22 05:14:36 EST 2009


It would be the same basic approach, but you need to run through the 
records like:

recordset = query_database(sql_filter)
while(not recordset.eof)
{
    AddFeatureToCollection(....)
}

Regards, Kenneth Skovhede, GEOGRAF A/S



Carmelo Saffioti skrev:
> The buffer example doesn't read data from database, isn't it? I need 
> to read data from a MySql database and, after executing a SQL query, 
> display them on the map.
> How can I do that? Is there any example code about that?
>
>
> Thank you very much again
> 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 11:24 AM
> Subject: Re: [mapguide-users] Adding a temporary Layer in MapGuide
>
>
>> 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
>> _______________________________________________
>> 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