[mapguide-users] help
Kenneth Skovhede, GEOGRAF A/S
ks at geograf.dk
Sun May 10 16:38:45 EDT 2009
The code looks alright.
Do you refresh the map afterwards?
What is in the "insertResults" ?
(There can be a hidden error, due to a bug in MapGuide)
Are you sure that the LayerDefinition matches the FeatureSource?
Try to create the FeatureSource and LayerDefinition in "Library://" instead,
so you can examine the layer from Studio/Maestro.
Regards, Kenneth Skovhede, GEOGRAF A/S
saloua wakrim skrev:
> i try the following code for displaying layer wich contains line in
> map, so i digitize a line, create temporary feature for this line,
> create a layer wich contains it and add it to the map. it doesn't give
> me some error but i can see the line in the map (i can draw it).
> Please help me. the code is following:
>
>
>
> String
>
> dataSource = "Session:" + sessionid1 + "//" + myLayerName +
> ".FeatureSource"; MgResourceIdentifier dataSourceId = new
> MgResourceIdentifier(dataSource); MgFeatureService featureSrvc =
> (MgFeatureService)siteConnection.CreateService(MgServiceType.FeatureService);
> if (DoesLayerExist(myLayerName, map) == false)
>
> {
>
>
>
> //create Feature Source MgClassDefinition myClassDef = new
> MgClassDefinition();
>
> myClassDef.SetName(myLayerName);
>
> myClassDef.SetDescription(myLayerName +
>
> " Feature Source");
>
> myClassDef.SetDefaultGeometryPropertyName(
>
> "SHPGEOM"); MgDataPropertyDefinition prop = new
> MgDataPropertyDefinition("KEY");
>
> prop.SetDataType(
>
> MgPropertyType.Int32);
>
> prop.SetAutoGeneration(
>
> true);
>
> prop.SetReadOnly(
>
> true);
>
> myClassDef.GetIdentityProperties().Add(prop);
>
> myClassDef.GetProperties().Add(prop);
>
> prop =
>
> new MgDataPropertyDefinition("ID");
>
> prop.SetDataType(
>
> MgPropertyType.Int32);
>
> myClassDef.GetProperties().Add(prop);
>
> MgGeometricPropertyDefinition geomProp = new
> MgGeometricPropertyDefinition("SHPGEOM");
>
> geomProp.SetGeometryTypes(
>
> MgFeatureGeometricType.Curve);
>
> myClassDef.GetProperties().Add(geomProp);
>
> MgFeatureSchema schema = new MgFeatureSchema(myLayerName + "Schema",
> myLayerName + "SchemaDesc");
>
> schema.GetClasses().Add(myClassDef);
>
> MgCreateSdfParams sdfParams = new MgCreateSdfParams("MGA-56 (GDA94 /
> MGA zone 56)", map.GetMapSRS(), schema);
>
> featureSrvc.CreateFeatureSource(dataSourceId, sdfParams);
>
>
>
>
>
> //create layer //String layerDef = "Session:" + sessionid1 + "//" +
> myLayerName + ".LayerDefinition"; MgResourceIdentifier layerDefId =
> new
> MgResourceIdentifier("Library://essaicalque/Redline.LayerDefinition");
>
>
>
>
>
> MgByteSource content = new MgByteSource(@"C:\Program
> Files\MapGuideOpenSource\WebServerExtensions\www\essaiselect2\Layerdef.xml");
>
>
> resourceSrvc.SetResource(layerDefId, content.GetReader(),
>
> null); //code enlev‚ d'ici: ajouter layer resource … la carte //il
> faut ajouter l'autre code: add layer resource to map //DOMDocument
> domdoc = new DOMdocument(); MgLayer
> result=add_layer_resource_to_map(layerDefId,resourceSrvc,myLayerName,myLayerName,map);
>
>
> }
>
> MgInsertFeatures insertFeatures = new MgInsertFeatures(myLayerName,
> makeLine("1", x0, y0, x1, y1)); MgFeatureCommandCollection commands =
> new MgFeatureCommandCollection();
>
> commands.Add(insertFeatures);
>
> int commandIndex = commands.IndexOf(insertFeatures);
> MgPropertyCollection insertResults;
>
> insertResults = featureSrvc.UpdateFeatures(dataSourceId, commands,
>
> false); MgLayer myLayer1 = map.GetLayers().GetItem(myLayerName) as
> MgLayer;
>
> myLayer1.ForceRefresh();
>
>
>
> //commands.Add(new MgInsertFeatures(myLayerName,makeLine("1", x0, y0,
> x1, y1)));
>
>
>
> map.Save(resourceSrvc);
>
>
>
> <
>
> script runat=server> Boolean result; MgPropertyCollection
> makeLine(String Name, Double x0, Double y0, Double x1, Double y1)
>
> {
>
> MgPropertyCollection PropertyCollection = new MgPropertyCollection();
> MgInt32Property nameProperty = new MgInt32Property("ID", 1);
>
> PropertyCollection.Add(nameProperty);
>
> MgWktReaderWriter wktReaderWriter = new MgWktReaderWriter();
> MgAgfReaderWriter agfReaderWriter = new MgAgfReaderWriter();
> MgGeometry geometry = wktReaderWriter.Read("LINESTRING XY (" + x0 + "
> " + y0 + "," + x1 + " " + y1 + ")") as MgLineString; //MgGeometry
> geometry = wktReaderWriter.Read("LINESTRING(3 4,10 50,20 25)") as
> MgLineString; MgByteReader geometryByteReader =
> agfReaderWriter.Write(geometry); MgGeometryProperty geometryProperty =
> new MgGeometryProperty("SHPGEOM", geometryByteReader);
>
> PropertyCollection.Add(geometryProperty);
>
> return PropertyCollection;
>
> }
>
> Boolean
>
> DoesLayerExist(String LayerName, MgMap Map)
>
> {
>
> MgLayerCollection layers = Map.GetLayers();
>
> result = (layers.Contains(myLayerName));
>
> return result;
>
> }
>
> MgLayer add_layer_resource_to_map(MgResourceIdentifier
> layerresourceid, MgResourceService rs, String layername, String
> layerlegendlabel, MgMap map)
>
> {
>
> MgLayer myLayer = new MgLayer(layerresourceid, rs);
>
> myLayer.SetName(layername);
>
> myLayer.SetLegendLabel(layerlegendlabel);
>
> myLayer.SetDisplayInLegend(
>
> true);
>
> myLayer.SetSelectable(
>
> true);
>
>
>
> if (!map.GetLayers().Contains(layername))
>
> {
>
> map.GetLayers().Insert(0, myLayer);
>
> }
>
> myLayer.SetVisible(
>
> true);
>
> myLayer.ForceRefresh();
>
> map.Save(resourceSrvc);
>
> return myLayer;
>
> }
>
> </
>
> script>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20090510/f82aa6d4/attachment.html
More information about the mapguide-users
mailing list