[mapguide-users] Zoom To Selection
Nandorov
nandorov at gmail.com
Mon Dec 22 10:28:37 EST 2008
Or maybe ucan try this
MgFeatureQueryOptions nameQuery = new MgFeatureQueryOptions();
nameQuery.SetFilter("YOUR_QUERY"); // PARCEL_ID ='O1'
MgSelection selection = new MgSelection(map);
MgLayer layer = map.GetLayers().GetItem("YOUR_LAYER");
featureReader = featureService.SelectFeatures(YOUR_LAYER_RES_ID,
"YOUR_LAYER", nameQuery);
selection.AddFeatures(layer, featureReader, 0);
String selectionXML = selection.ToXml();
' then apply the selection and the zoom
function onPageLoad() {
var selectionXML = '<%= selectionXML %>';
parent.parent.SetSelectionXML(selectionXML);
}
Nandorov wrote:
>
> 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-tp21070073p21129651.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list