[mapguide-users] Zoom To Selection

padmini godavarthi godavarthi.padmini at gmail.com
Sat Dec 20 05:59:10 EST 2008


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-tp21070073p21103670.html
Sent from the MapGuide Users mailing list archive at Nabble.com.



More information about the mapguide-users mailing list