[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