[mapguide-users] Adding a temporary Layer in MapGuide

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


The tooltip uses a very narrow selection area,
meaning that you have to be VERY precise to hit it.
At high zoom levels, it is not possible to hit the correct pixel.

You can modify the ajaxmappane.templ file to use a wider search area.
I recommend calculating an area of 10x10 pixels, and then constructing
a polygon that has that size in the current scale.

Regards, Kenneth Skovhede, GEOGRAF A/S



Carmelo Saffioti skrev:
> I solved the problem creating a static layer using MapGuide Studio, 
> which feature source reads data from a temporary MySql table. 
> Everytime I need to "filter" these data, before using the layer I 
> modify/update data on the temporary table...
>
> Now I'd like to show a tooltip when the cursor is on the displayed 
> point. The tooltip works when I move the cursor on POLYGONS, but it is 
> not working on POINTS. How can I do?
>
>
> Thank you 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: Thursday, January 22, 2009 11:14 AM
> Subject: Re: [mapguide-users] Adding a temporary Layer in MapGuide
>
>
>> 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
>> _______________________________________________
>> 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