[mapguide-users] Zoom To Selection

Nandorov nandorov at gmail.com
Mon Dec 22 10:02:18 EST 2008


Hi,
sorry for response too late but this month is a busy one (:

First we have to make sure you are getting the coordinates, print x and y
coordinates just to make sure the query is working well. Then apply a
zoomToView with the coordinates u get (hardcode this just to prove).
Finally, the setSelectionXml might work. I have done those selections with a
xml template. if u want i can share it, but it's php code.

Regards


padmini godavarthi wrote:
> 
> Hi,
> Thanks for u r help.
>  I  wrote u r code but in my application it is neither selected the
> parcel_id on the map nor zoomed to that parcel_id  on the map.
> 
> 
> My code is as follows:-
> 
>         NameValueCollection serverVars = Request.ServerVariables;
>         String strServerVars = "";
>         foreach (String str in serverVars.AllKeys)
>         {
> 
>             strServerVars += "<br>" + str;
> 
>         }
>         String platform = serverVars["SERVER_SOFTWARE"];
>         String queryStr = serverVars["QUERY_STRING"];
>         string queryStr1 = serverVars["Form"];
> 
> 
>         NameValueCollection requestParams = Request.HttpMethod == "POST" ?
> Request.Form : Request.QueryString;
>         String sessionId = Request.QueryString["SESSION"];
>         //String sessionId = Request.QueryString["SESSION"]; ;
> 
>         string realPath = Request.ServerVariables["APPL_PHYSICAL_PATH"];
>         String configPath = realPath + "webconfig.ini";
>         MapGuideApi.MgInitializeWebTier(configPath);
>         MgUserInformation userInfo = new MgUserInformation(sessionId);
>         MgSiteConnection siteConnection = new MgSiteConnection();
>         siteConnection.Open(userInfo);
>         MgResourceService resService =
> (MgResourceService)siteConnection.CreateService(MgServiceType.ResourceService);
>         MgFeatureService featureService =
> (MgFeatureService)siteConnection.CreateService(MgServiceType.FeatureService);
>         MgMap map = new MgMap();
>         map.Open(resService, "oramap");
>         MgResourceIdentifier fetresource = new
> MgResourceIdentifier("Library://Orasample/resora.FeatureSource");
>         MgFeatureQueryOptions nameQuery = new MgFeatureQueryOptions();
>         nameQuery.AddFeatureProperty("PARCEL_ID");
>         nameQuery.SetFilter("PARCEL_ID='670_115'");
>        
>         MgLayer layer = map.GetLayers().GetItem(@"GEOM_TABLE") as MgLayer;
>         MgFeatureReader featureReader =
> featureService.SelectFeatures(fetresource, layer.GetFeatureClassName(),
> nameQuery);
>         MgSelection selection = new MgSelection(map);
>         featureReader.ReadNext(); 
>         MgByteReader Geom = featureReader.GetGeometry("Geometry");
>         MgAgfReaderWriter agfReaderWriter = new MgAgfReaderWriter();
>         // featureReader.ReadNext(); 
> 
>         MgGeometry featureGeometry = agfReaderWriter.Read(Geom); 
>         selection.AddFeatures(layer, featureReader, 0);
>         String selectXML = selection.ToXml();
>         selection.Save(resService, "oramap");
>        
> 
>          MgPoint centroid = featureGeometry.GetCentroid();
>          double mapCenterX = centroid.GetCoordinate().GetX();
>          double mapCenterY = centroid.GetCoordinate().GetY(); 
> 
>       
>         featureReader.Close();
>         Page.ClientScript.RegisterStartupScript(Page.GetType(), "test",
> "select('" + selectXML + "'," + mapCenterX + "," + mapCenterY + ");",
> true);
> 
> 
> and my javascript code is as follows
> 
> 
>                
>       function select(val,x,y) {
>        alert("1st");
>          var selectionXML = val;
>            var xval = x;
>         var yval = y;
>         
>            parent.parent.SetSelectionXML(selectionXML); 
>             parent.parent.mapFrame.ZoomToView(xval,yval,2000,true);
>         
>         parent.parent.refresh;
>          
>         }
> 
> can u plz tell me the solution so that i can rectify it in my code.
> 
> 
> Thanks and Regards,
> Padmini
> 
> 
> 
>    
> 
> 
> Nandorov wrote:
>> 
>> Hi,
>> you can try this, after applying the filter
>> featureReader =featureService.SelectFeatures(parcelId,
>> YourLayer.GetFeatureClassName(), nameQuery);
>> 
>> i did it in php, but in .net might be something like this ;p
>> 
>> MgAgfReaderWriter agfReaderWriter = new MgAgfReaderWriter();
>> featureReader.ReadNext();
>> MgByteReader Geom = featureReader.GetGeometry('Geometry'); (or the name
>> of ur geometry property)
>> 
>> -- you get the geometry of ur parcel
>> MgGeometry featureGeometry = agfReaderWriter.Read(Geom);
>> 
>> -- then get the center of the polygon and its coordinates
>> MgPoint centroid = featureGeometry.GetCentroid();
>> double mapCenterX = centroid.GetCoordinate().GetX(); -- or if basic dim
>> mapCenterX as double = ...
>> double mapCenterY = centroid.GetCoordinate().GetY();
>> 
>> -- redirect to another page and in the load
>> 
>> function OnPageLoad(x,y){
>> 	parent.parent.mapFrame.ZoomToView(x,y,2000,true);
>> 	parent.parent.mapFrame.Refresh();
>> }
>> 
>> its something like this. hope it helps
>> Regards
>> 
>> 
>> padmini godavarthi wrote:
>>> 
>>> Hi,
>>> Thanks for u rreply. 
>>> it works fine.when i query with parcel_id='1' it was selected on the map
>>> and displays the attributes in the property window.But i want to zoom 
>>> to that parcel id on the map(like zoom to shape)
>>> 1)How is it possible?
>>> 
>>> 
>>> Regards,
>>> Padmini.
>>> 
>>> 
>>> Nandorov wrote:
>>>> 
>>>> featureService.SelectFeatures(parcelId, "GEOM_TABLE", nameQuery); 
>>>> 
>>>> i think you should use layer class name instead of layer name
>>>> 
>>>> featureService.SelectFeatures(parcelId,
>>>> YourLayer.GetFeatureClassName(), nameQuery); 
>>>> 
>>>> 
>>>> padmini godavarthi wrote:
>>>>> 
>>>>> 
>>>>> Hi,
>>>>> Iam using Mapguide Opensource 2.0 (with .net 2.0 +IIS 5.1)
>>>>> 
>>>>> I want to query the parcel_id and zoomed it on the map
>>>>> 
>>>>> may code is
>>>>> 
>>>>> 
>>>>>        NameValueCollection serverVars = Request.ServerVariables;
>>>>>        String strServerVars = "";
>>>>>        foreach (String str in serverVars.AllKeys)
>>>>>        {
>>>>> 
>>>>>            strServerVars += "<br>" + str;
>>>>> 
>>>>>        }
>>>>>        String platform = serverVars["SERVER_SOFTWARE"];
>>>>>        String queryStr = serverVars["QUERY_STRING"];
>>>>>        string queryStr1 = serverVars["Form"];
>>>>>        NameValueCollection requestParams = Request.HttpMethod ==
>>>>> "POST" ?
>>>>> Request.Form : Request.QueryString;
>>>>>        String sessionId = Request.QueryString["SESSION"];
>>>>>        //String sessionId = Request.QueryString["SESSION"]; ;
>>>>> 
>>>>>        string realPath =
>>>>> Request.ServerVariables["APPL_PHYSICAL_PATH"];
>>>>>        String configPath = realPath + "webconfig.ini";
>>>>>        MapGuideApi.MgInitializeWebTier(configPath);
>>>>> 
>>>>>        MgUserInformation userInfo = new MgUserInformation(sessionId);
>>>>> 
>>>>>        MgSiteConnection siteConnection = new MgSiteConnection();
>>>>>        siteConnection.Open(userInfo);
>>>>> 
>>>>>        MgResourceService resService =
>>>>> (MgResourceService)siteConnection.CreateService(MgServiceType.ResourceService);
>>>>>        MgFeatureService featureService =
>>>>> (MgFeatureService)siteConnection.CreateService(MgServiceType.FeatureService);
>>>>> 
>>>>>        MgMap map = new MgMap();
>>>>>        map.Open(resService, "oramap");
>>>>> 
>>>>> 
>>>>>        MgFeatureQueryOptions nameQuery = new MgFeatureQueryOptions();
>>>>> 
>>>>> //nameQuery.SetFilter(ConfigurationManager.AppSettings["FieldToFilter"]
>>>>> +
>>>>> "=" + Globals.gURLParam);
>>>>>        nameQuery.SetFilter("PARCEL_ID" + "=" + "670_111");
>>>>>        MgResourceIdentifier parcelId = new
>>>>> MgResourceIdentifier("Library://Orasample/resora.FeatureSource");
>>>>>        MgFeatureReader featureReader =
>>>>> featureService.SelectFeatures(parcelId, "GEOM_TABLE", nameQuery);
>>>>> 
>>>>>        //Highlight the query result on the map
>>>>>        MgSelection selection = new MgSelection(map);
>>>>>        MgLayer layer = (MgLayer)map.GetLayers().GetItem("GEOM_TABLE");
>>>>> 
>>>>> 
>>>>>        featureReader = featureService.SelectFeatures(parcelId,
>>>>> "GEOM_TABLE", nameQuery);
>>>>>        selection.AddFeatures(layer, featureReader, 0);
>>>>>      String selectXML = selection.ToXml();
>>>>>        selection.Save(resService, "oramap");
>>>>>        Page.ClientScript.RegisterStartupScript(Page.GetType(), "test",
>>>>> "select('" + selectXML + "');", true);
>>>>> }
>>>>> 
>>>>> but i got an error at
>>>>> 
>>>>>   MgFeatureReader featureReader =
>>>>> featureService.SelectFeatures(parcelId,
>>>>> "GEOM_TABLE", nameQuery);
>>>>> 
>>>>> 
>>>>> 1)can u plz tell me what do u man by faeture class name?
>>>>> from where i will gt it?
>>>>> 
>>>>> Thanks and Regards,
>>>>> Padmini.
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Zoom-To-Selection-tp21070073p21129245.html
Sent from the MapGuide Users mailing list archive at Nabble.com.



More information about the mapguide-users mailing list