<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">tks&nbsp; a lots.<br><br>I will translate it into php, hope it&nbsp; works!<br><br>and, I am trying the function--Query of mapwidget, but it donn't support attribite filter.<br><br>--- <b>10年5月6日,周四, miansi [via OSGeo.org] <i>&lt;<a href="/user/SendEmail.jtp?type=node&node=5012703&i=0" target="_top" rel="nofollow">[hidden email]</a>&gt;</i></b> 写道:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>发件人: miansi [via OSGeo.org] &lt;<a href="/user/SendEmail.jtp?type=node&node=5012703&i=1" target="_top" rel="nofollow">[hidden email]</a>&gt;<br>主题: Re: How to use setselection in fusion?<br>收件人: "lzzgeo" &lt;<a href="/user/SendEmail.jtp?type=node&node=5012703&i=2" target="_top" rel="nofollow">[hidden email]</a>&gt;<br>日期: 2010年5月6日,周四,上午12:21<br><br><div id="yiv1073787517">

That is what I am trying to do right now. I am working with .NET. So I will share what I am doing and maybe that will help :-)
<br><br>1. Build Selection XML
<br><br>Note: searchString is your query (ID==1 || ID==2).
<br><br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mgMapName = requestParams["mapName"];
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mgSessionId = requestParams["sessionId"];
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Initialize the web-tier.
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var realPath = this.Request.ServerVariables["APPL_PHYSICAL_PATH"];
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var configPath = realPath + "..\\webconfig.ini";
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MapGuideApi.MgInitializeWebTier(configPath);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Connect to the site.
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var userInfo = new MgUserInformation(mgSessionId);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var conn = new MgSiteConnection();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; conn.Open(userInfo);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // get the map
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var map = new MgMap(conn);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.Open(mgMapName);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Perform any necessary transforms on the layer name or ids
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mapObjects = TransformInputLayer(requestParams["objectTypes"].Split(','), requestParams["objectIds"].Split(','));
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Select the objects on the map
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var layers = map.GetLayers();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var selection = new MgSelection(map);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach (var layer in layers)
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var searchString = new StringBuilder();
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Build out the search expression for the map layer
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach (var mapObject in mapObjects.Where(rec =&gt; rec.LayerName == layer.Name))
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (searchString.Length &gt; 0)
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; searchString.Append(" OR ");
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; searchString.AppendFormat("Id = '{0}'", mapObject.ObjectId);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Execte the search on the layer
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (searchString.Length &gt; 0)
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var displayIdQuery = new MgFeatureQueryOptions();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; displayIdQuery.SetFilter(searchString.ToString());
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var featureReader = layer.SelectFeatures(displayIdQuery);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selection.AddFeatures(layer, featureReader, AppSettings.MgSelectionFilterSize);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; featureReader.Close();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; featureReader.Dispose();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var selectionXml = selection.ToXml();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.Dispose();
<br><br>2. Now the fun part I am working on right now - pass your selection to Fusion.
<br>I used to have AJAX Viewer and I used following logic:
<br>I have some aspx page (SetMapSelection.aspx)
<br><br><br><b>SetMapSelection.aspx:</b><br><br>&lt;head runat="server"&gt;
<br>&nbsp; &nbsp; &lt;title&gt;Set Map Selection Page&lt;/title&gt;
<br><br>&nbsp; &nbsp; &lt;script type="text/javascript" language="javascript" src="<a rel="nofollow" target="_blank" href="http://localhost/mapguide/fusion/layers/MapGuide/MapGuideViewerApi.js" link="external">http://localhost/mapguide/fusion/layers/MapGuide/MapGuideViewerApi.js</a>"&gt;&lt;/script&gt;
<br><br>&nbsp; &nbsp; &lt;script type="text/javascript"&gt;
<br>&nbsp; &nbsp; // Emit the following function and assocate it with the onLoad event for 
<br>&nbsp; &nbsp; // the page so that it gets executed when this page loads in the browser. &nbsp; &nbsp; &nbsp; 
<br>&nbsp; &nbsp; // The function calls the SetSelectionXML method on the Viewer Frame, 
<br>&nbsp; &nbsp; // which updates the current selection on the viewer and the server.
<br>&nbsp; &nbsp; function OnPageLoad() {
<br>&nbsp; &nbsp; &nbsp; &nbsp; var selectionXml = document.getElementById("hfSelectionXml").getAttribute("value");
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; parent.SetSelectionXML(selectionXml);
<br>&nbsp; &nbsp; &nbsp; &nbsp; parent.ExecuteMapAction(10);
<br>&nbsp; &nbsp; &nbsp; &nbsp; parent.ExecuteMapAction(99);
<br><br>&nbsp; &nbsp; }
<br>&nbsp; &nbsp; &lt;/script&gt;
<br><br>&lt;/head&gt;
<br>&lt;body onload="OnPageLoad()"&gt;
<br>&nbsp; &nbsp; &lt;form id="formM5Logic" runat="server"&gt;
<br>&nbsp; &nbsp; &lt;div&gt;
<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;asp:TextBox ID="hfSelectionXml" runat="server"&gt;&lt;/asp:TextBox&gt;
<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;asp:HiddenField ID="HiddenFieldM5Logic" runat="server"&gt;&lt;/asp:HiddenField&gt;
<br>&nbsp; &nbsp; &lt;/div&gt;
<br>&nbsp; &nbsp; &lt;/form&gt;
<br>&lt;/body&gt;
<br><br><br><b>SetMapSelection.aspx.cs:</b><br><br>&nbsp; &nbsp; &nbsp; &nbsp; protected void Page_Load(object sender, EventArgs e)
<br>&nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Disable the client side cache
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.Response.Cache.SetCacheability(HttpCacheability.NoCache);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Write to session which page is loaded, this is used by the context help to determine the 
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // approproiate help page to load.
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.Session.Add(SessionStateBase.HELP_PAGE_REFERENCE, this.Request.Path);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Get the input parameters into the selection
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var requestParams = this.Request.HttpMethod == "GET" ? this.Request.QueryString : this.Request.Form;
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mgMapName = requestParams["mapName"];
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mgSessionId = requestParams["sessionId"];
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Initialize the web-tier.
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var realPath = this.Request.ServerVariables["APPL_PHYSICAL_PATH"];
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var configPath = realPath + "..\\webconfig.ini";
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MapGuideApi.MgInitializeWebTier(configPath);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Connect to the site.
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var userInfo = new MgUserInformation(mgSessionId);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var conn = new MgSiteConnection();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; conn.Open(userInfo);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // get the map
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var map = new MgMap(conn);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.Open(mgMapName);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Perform any necessary transforms on the layer name or ids
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var mapObjects = TransformInputLayer(requestParams["objectTypes"].Split(','), requestParams["objectIds"].Split(','));
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Select the objects on the map
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var layers = map.GetLayers();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var selection = new MgSelection(map);
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach (var layer in layers)
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var searchString = new StringBuilder();
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Build out the search expression for the map layer
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach (var mapObject in mapObjects.Where(rec =&gt; rec.LayerName == layer.Name))
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (searchString.Length &gt; 0)
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; searchString.Append(" OR ");
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; searchString.AppendFormat("Id = '{0}'", mapObject.ObjectId);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Execte the search on the layer
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (searchString.Length &gt; 0)
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var displayIdQuery = new MgFeatureQueryOptions();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; displayIdQuery.SetFilter(searchString.ToString());
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var featureReader = layer.SelectFeatures(displayIdQuery);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selection.AddFeatures(layer, featureReader, AppSettings.MgSelectionFilterSize);
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; featureReader.Close();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; featureReader.Dispose();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var selectionXml = selection.ToXml();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; map.Dispose();
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.hfSelectionXml.Text = selectionXml;
<br>&nbsp; &nbsp; &nbsp; &nbsp; }
<br><br>So as you can see - Page_Load builds selection XML and OnPageLoad passes it to AJAX Viewer frame for further processing.
<br><br>What I am puzzled with is to how to get a reference to Fusion, so I can pass my selection to Fusion. Something like this:
<br><br>&nbsp; &nbsp; function OnPageLoad()
<br>&nbsp; &nbsp; { &nbsp; 
<br>&nbsp; &nbsp; &nbsp; &nbsp;var selectionXml = document.getElementById("hfSelectionXml").getAttribute("value");
<br><br>&nbsp; &nbsp; &nbsp; &nbsp;var vf = top.document.getElementById('frmMap');
<br><br>&nbsp; &nbsp; &nbsp; &nbsp;vf.document.forms[0].GetFusionMapWidget.setSelection(selectionXml, true); 
<br>&nbsp; &nbsp; }
<br><br>Note:
<br>In my app I have 2 iframes - Map Viewer and Application frame. frmMap is Map Viewer frame:
<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;iframe name="frmDefault" id="frmDefault" class="frameBoxGeneral" frameborder="0" src="Pages/Loading.aspx"&gt;
<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/iframe&gt;
<br>&nbsp; &nbsp; &nbsp; &nbsp; &lt;iframe name="frmMap" id="frmMap" src="&lt;%= AppSettings.MgServicesUrl %&gt;/fusion/templates/mapguide/standard/index.html"
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class="frameBoxMap" frameborder="0"&gt;&lt;/iframe&gt;
<br>
<br><br>
<hr color="#cccccc" noshade="noshade" size="1">
<div style="color: rgb(102, 102, 102); font: 11px tahoma,geneva,helvetica,arial,sans-serif;">
View message @ <a rel="nofollow" target="_blank" href="http://osgeo-org.1803224.n2.nabble.com/How-to-use-setselection-in-fusion-tp5001965p5009766.html" link="external">http://osgeo-org.1803224.n2.nabble.com/How-to-use-setselection-in-fusion-tp5001965p5009766.html</a>

<br>To unsubscribe from How to use setselection in fusion?, <a rel="nofollow" target="_blank" link="external">click here</a>.
</div>
<br>
</div></blockquote></td></tr></table><br>






      &nbsp;
<br><hr align="left" width="300">
View this message in context: <a href="http://osgeo-org.1803224.n2.nabble.com/How-to-use-setselection-in-fusion-tp5001965p5012703.html">Re: How to use setselection in fusion?</a><br>
Sent from the <a href="http://osgeo-org.1803224.n2.nabble.com/MapGuide-Users-f1803227.html">MapGuide Users mailing list archive</a> at Nabble.com.<br>