[mapguide-users] GetMapImage
wordsy
mwordell at gmail.com
Mon Jan 5 11:40:39 EST 2009
wordsy wrote:
>
> I am hoping someone here has had the same problem.
>
> My scenario:
>
> I have a grid of items that are on a map (layers etc). This page does not
> have the main map. I have a requirement where a user can click on the
> item in the grid (asp.net datagrid) and they will be able to see a preview
> of the item they have clicked on. I am using the GetMapImage in a user
> control. I have successfully created the control so it goes to the item
> picked in the list and renders that image. The only problem I have is
> actually selecting the item in the map by.
>
> Here is the code I am using:
>
> string searchstring = "SpatialKey = '" + this.RadTextBox1.Text + "'";
>
> MgFeatureQueryOptions DisplayIdQuery = new
> MgFeatureQueryOptions();
>
> DisplayIdQuery.SetFilter(searchstring);
>
> MgUserInformation userInfo = new
> MgUserInformation(Session[SessionStateBase.SESSION_GIS_SESSION_ID].ToString());
> MgSiteConnection siteConnection = new MgSiteConnection();
> siteConnection.Open(userInfo);
>
> // get the map
> MgMap map = new MgMap(siteConnection);
>
> map.Open(Session[SessionStateBase.SESSION_MUNICIPALITY].ToString());
>
> MgAgfReaderWriter geometryReaderWriter = new
> MgAgfReaderWriter();
>
> MgLayer layer = map.GetLayers().GetItem(LayerName) as MgLayer;
> MgFeatureReader featureReader =
> layer.SelectFeatures(DisplayIdQuery);
>
> featureReader.ReadNext();
>
> MgByteReader byteReader =
> featureReader.GetGeometry("Geometry");
> MgGeometry geometry = geometryReaderWriter.Read(byteReader);
> MgPoint point = geometry.GetCentroid();
>
> double x = point.GetCoordinate().GetX();
> double y = point.GetCoordinate().GetY();
>
> MgSelection selection = new MgSelection(map);
>
> /////THIS IS WHERE I AM HAVING THE PROBLEM/////
> selection.AddFeatures(layer, featureReader, 0);
> //selection.Add(layer.GetObjectId(), map.GetClassName(),
> this.RadTextBox1.Text);
>
> String selectionXml = selection.ToXml();
> selectionXml = Regex.Replace(Server.UrlEncode(selectionXml),
> "%.{2}", new MatchEvaluator(CapitalizeEncoding));
>
> this.Image1.ImageUrl =
> "http://vmedmgis/mapguide/mapagent/mapagent.fcgi?OPERATION=GETMAPIMAGE&VERSION=1.0.0&SESSION="
> + Session[SessionStateBase.SESSION_GIS_SESSION_ID] + "&MAPNAME=" +
> Session[SessionStateBase.SESSION_MUNICIPALITY] +
> "&LOCALE=en&MAPDEFINITION=Library%3A%2F%2F&FORMAT=PNG&SELECTION=" +
> selectionXml + "&SETVIEWCENTERX=" + x.ToString() + "&SETVIEWCENTERY=" +
> y.ToString() + "&SETVIEWSCALE=" + ViewScale.ToString() +
> "&SETDISPLAYDPI=75&SETDISPLAYWIDTH=375&SETDISPLAYHEIGHT=250&SHOWLAYERS=&HIDELAYERS=&SHOWGROUPS=&HIDEGROUPS=&CLIP=0";
>
> When I select the item on the map and get the selectionXml javascript
> function I get
>
> <?xml version="1.0" encoding="UTF-8"?>
> <FeatureSet>
> <Layer id="6b85dffc-0000-1000-8000-005056c00008">
> <Class id="Classname">
> <ID>3QEAAA==</ID>
> </Class>
> </Layer>
> </FeatureSet>
>
> but when I run String selectionXml = selection.ToXml();
>
> my code doesn't resemble the javascript xml. Below is what I get.
>
> <?xml version=\"1.0\" encoding=\"UTF-8\"?>
> <FeatureSet xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
> xsi:noNamespaceSchemaLocation=\"FeatureSet-1.0.0.xsd\">
> </FeatureSet>
>
> As you can see, there is a major difference between the 2 selection xml.
>
> When I pass the selection xml generated by the server side code to the
> GetMapImage function the formats aren't the same.
>
> Any ideas why? Thanks for any help in advance.
>
>
>
--
View this message in context: http://n2.nabble.com/GetMapImage-tp2090701p2113621.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list