[mapguide-users] Re: How to change Existing Max scale for a layer

Kenneth Skovhede, GEOGRAF A/S ks at geograf.dk
Tue Mar 2 05:27:46 EST 2010


I don't think you remove the previous layer from the MgMap?
Try setting the legend label to something obvious, and DisplayInLegend = 
true,
so you can see if the layer is actually added to the map.

You may have to right click and choose Refresh in the legend for the
layer to appear.

As for the map.Save(), you need the mapname, like:
map.Save(resourceService, "Sheboygan");

Regards, Kenneth Skovhede, GEOGRAF A/S

On 01-03-2010 09:46, SriRam007 wrote:
>          Utility.InitializeWebTier(Request);
>          string myLayerName = ddlLayerForScale.SelectedItem.Text.ToString();
>          MgUserInformation userInfo = new
> MgUserInformation(Session["ID"].ToString());
>          MgSiteConnection siteConnection = new MgSiteConnection();
>          siteConnection.Open(userInfo);
>          MgResourceService resourceService =
> siteConnection.CreateService(MgServiceType.ResourceService) as
> MgResourceService;
>          MgMap map = new MgMap();
>          map.Open(resourceService, "Sheboygan");
>          MgLayerCollection layers = map.GetLayers();
>          ArrayList layerNames = new ArrayList();
>          MgLayer layer = Utility.GetLayerByName(map, myLayerName);
>          string s = layer.GetLayerDefinition().ToString();
>
>          MgResourceIdentifier resId = new
> MgResourceIdentifier(layer.GetFeatureSourceId());
>          MgResourceIdentifier layerDefResId = layer.GetLayerDefinition();
>          MgByteReader byteReader =
> resourceService.GetResourceContent(layerDefResId);
>
>          string byteReaderStr = byteReader.ToString();
>
>          ArrayList ReplaceValue = new ArrayList();
>          //ReplaceValue = ViewState["scaleRanges"] as ArrayList;
>
>          ReplaceValue = GetModifiedscaleValuefromGrid();
>          bool Validate = ValidateScaleValues(ReplaceValue);
>          if (Validate == true)
>          {
>              string layerDefinition = ReplaceScaleNodeValue(byteReaderStr,
> ReplaceValue);
>              String uniqueName = this.MakeUniqueLayerName(map, myLayerName);
>              MgResourceIdentifier layerResId = new
> MgResourceIdentifier("Session:" + Session["ID"].ToString() + "//" +
> uniqueName + ".LayerDefinition");
>              MgByteReader reader = new MgByteReader(layerDefinition,
> "text/xml");
>              resourceService.SetResource(layerResId, new
> MgByteReader(layerDefinition, "text/xml"), null);
>
>              MgLayer newLayer = new MgLayer(layerResId, resourceService);
>              newLayer.SetName(uniqueName);
>              newLayer.SetLegendLabel(layer.GetLegendLabel());
>              newLayer.SetDisplayInLegend(layer.GetDisplayInLegend());
>              newLayer.SetVisible(true);
>              newLayer.SetSelectable(layer.GetSelectable());
>              layers.Insert(layers.IndexOf(layer), newLayer);
>              newLayer.ForceRefresh();
>              map.Save(resourceService);//Not showing error but not working
> also.
>              //map.Save(resourceService, layerResId);//showing error
>              ScriptManager.RegisterClientScriptBlock(this, this.GetType(),
> "RefreshMap", "parent.parent.mapFrame.Refresh();", true);
>                      }
>          else
>          {
>              lblerror.Text = "Please enter correct scale ranges.";
>          }
>
>
> where i need to change please guide me.
> thanks
>
>    


More information about the mapguide-users mailing list