/// <summary> /// Let the editor to update the modified values to the underlying object. /// </summary> public void UpdateValues() { if (classobj == null) { return; } if (dirtyFlag) { // general tab classobj.name = this.textBoxName.Text; classobj.title = this.textBoxTitle.Text; classobj.setExpression(this.textBoxExpression.Text); classobj.setText(this.textBoxText.Text); // display tab if (checkBoxVisible.CheckState == CheckState.Checked) { classobj.status = mapscript.MS_ON; } else { classobj.status = mapscript.MS_OFF; } if (checkBoxQueryable.CheckState == CheckState.Checked) { classobj.template = "query"; } else { classobj.template = null; } classobj.maxscaledenom = -1; classobj.minscaledenom = -1; if (textBoxMaxZoom.Text == "") { classobj.maxscaledenom = -1; } else { classobj.maxscaledenom = double.Parse(textBoxMaxZoom.Text); } if (textBoxMinZoom.Text == "") { classobj.minscaledenom = -1; } else { classobj.minscaledenom = double.Parse(textBoxMinZoom.Text); } if (target != null) { target.RaisePropertyChanged(this); } SetDirty(false); } }
/// <summary> /// Creating a sample (preview) based on a classObj, styleObj or labelObj. /// </summary> /// <param name="original">The wrapper holding the original object.</param> private void CreateSampleMap(MapObjectHolder original) { MapObjectHolder originalMap = null; MapObjectHolder originalLayer = null; MapObjectHolder originalClass = null; // create a sample map to render a preview of the given object if (original.GetType() == typeof(classObj)) { // tracking down the whole object tree originalLayer = original.GetParent(); if (originalLayer != null) originalMap = originalLayer.GetParent(); // creating a new compatible map object if (originalMap != null) { layerObj layer = InitializeDefaultLayer(originalMap, originalLayer); layer.insertClass(((classObj)original).clone(), -1); // bindings are not supported with sample maps classObj classobj = layer.getClass(0); for (int i = 0; i < classobj.numstyles; i++) StyleBindingController.RemoveAllBindings(classobj.getStyle(i)); for (int i = 0; i < classobj.numlabels; i++) LabelBindingController.RemoveAllBindings(classobj.getLabel(i)); classobj.setText("Sample text"); classobj.setExpression(""); // remove expression to have the class shown this.target = new MapObjectHolder(classobj, original.GetParent()); } } else if (original.GetType() == typeof(styleObj)) { // tracking down the whole object tree if (original.GetParent().GetType() == typeof(labelObj)) originalClass = original.GetParent().GetParent(); else originalClass = original.GetParent(); if (originalClass != null) originalLayer = originalClass.GetParent(); if (originalLayer != null) originalMap = originalLayer.GetParent(); // creating a new compatible map object if (originalMap != null) { layerObj layer = InitializeDefaultLayer(originalMap, originalLayer); classObj classobj = new classObj(layer); classobj.name = MapUtils.GetClassName(layer); styleObj style; if (original.GetParent().GetType() == typeof(labelObj)) { classobj.addLabel(new labelObj()); labelObj label = classobj.getLabel(classobj.numlabels - 1); MapUtils.SetDefaultLabel(label, layer.map); label.insertStyle(((styleObj)original).clone(), -1); style = label.getStyle(0); } else { classobj.insertStyle(((styleObj)original).clone(), -1); style = classobj.getStyle(0); } // bindings are not supported with sample maps StyleBindingController.RemoveAllBindings(style); classobj.setText("Sample text"); this.target = new MapObjectHolder(style, original.GetParent()); } } else if (original.GetType() == typeof(labelObj)) { // tracking down the whole object tree originalClass = original.GetParent(); if (originalClass != null) { if (originalClass.GetType() == typeof(classObj)) { originalLayer = originalClass.GetParent(); if (originalLayer != null) originalMap = originalLayer.GetParent(); } else if (originalClass.GetType() == typeof(scalebarObj)) { originalMap = originalClass.GetParent(); } } // creating a new compatible map object if (originalMap != null) { layerObj layer = InitializeDefaultLayer(originalMap, originalLayer); classObj classobj = new classObj(layer); classobj.name = MapUtils.GetClassName(layer); labelObj label = new labelObj(); if (originalClass.GetType() == typeof(classObj)) { // copy settings label.updateFromString(((labelObj)original).convertToString()); } classobj.addLabel(label); this.target = new MapObjectHolder(layer.getClass(0).getLabel(0), original.GetParent()); } } else throw new Exception("Invalid target type: " + original.GetType()); }
public static void Main(string[] args) { if (args.Length < 2) usage(); // creating a new map from scratch mapObj map = new mapObj(null); // adding a layer layerObj layer = new layerObj(map); layer.type = MS_LAYER_TYPE.MS_LAYER_POINT; layer.status = mapscript.MS_ON; layer.connectiontype = MS_CONNECTION_TYPE.MS_INLINE; // define the attribute names from the inline layer layer.addProcessing("ITEMS=attribute1,attribute2,attribute3"); // define the class classObj classobj = new classObj(layer); classobj.template = "query"; // making the layer queryable // setting up the text based on multiple attributes classobj.setText("('Shape:' + '[attribute1]' + ' Color:' + '[attribute2]' + ' Size:' + '[attribute3]')"); // define the label classobj.label.outlinecolor = new colorObj(255, 255, 255, 0); classobj.label.force = mapscript.MS_TRUE; classobj.label.size = (double)MS_BITMAP_FONT_SIZES.MS_MEDIUM; classobj.label.position = (int)MS_POSITIONS_ENUM.MS_LC; classobj.label.wrap = ' '; // set up attribute binding classobj.label.setBinding((int)MS_LABEL_BINDING_ENUM.MS_LABEL_BINDING_COLOR, "attribute2"); // define the style styleObj style = new styleObj(classobj); style.color = new colorObj(0, 255, 255, 0); style.setBinding((int)MS_STYLE_BINDING_ENUM.MS_STYLE_BINDING_COLOR, "attribute2"); style.setBinding((int)MS_STYLE_BINDING_ENUM.MS_STYLE_BINDING_SIZE, "attribute3"); Random rand = new Random((int)DateTime.Now.ToFileTime()); ; // creating the shapes for (int i = 0; i < 10; i++) { shapeObj shape = new shapeObj((int)MS_SHAPE_TYPE.MS_SHAPE_POINT); // setting the shape attributes shape.initValues(4); shape.setValue(0, Convert.ToString(i)); shape.setValue(1, new colorObj(rand.Next(255), rand.Next(255), rand.Next(255), 0).toHex()); shape.setValue(2, Convert.ToString(rand.Next(25) + 5)); lineObj line = new lineObj(); line.add(new pointObj(rand.Next(400) + 25, rand.Next(400) + 25, 0, 0)); shape.add(line); layer.addFeature(shape); } map.width = 500; map.height = 500; map.setExtent(0,0,450,450); map.selectOutputFormat(args[0]); imageObj image = map.draw(); image.save(args[1], map); //perform a query layer.queryByRect(map, new rectObj(0, 0, 450, 450, 0)); resultObj res; shapeObj feature; using (resultCacheObj results = layer.getResults()) { if (results != null && results.numresults > 0) { // extracting the features found layer.open(); for (int j = 0; j < results.numresults; j++) { res = results.getResult(j); feature = layer.getShape(res); if (feature != null) { Console.WriteLine(" Feature: shapeindex=" + res.shapeindex + " tileindex=" + res.tileindex); for (int k = 0; k < layer.numitems; k++) { Console.Write(" " + layer.getItem(k)); Console.Write(" = "); Console.Write(feature.getValue(k)); Console.WriteLine(); } } } layer.close(); } } }
public static void Main(string[] args) { if (args.Length < 2) { usage(); } // creating a new map from scratch mapObj map = new mapObj(null); // adding a layer layerObj layer = new layerObj(map); layer.type = MS_LAYER_TYPE.MS_LAYER_POINT; layer.status = mapscript.MS_ON; layer.connectiontype = MS_CONNECTION_TYPE.MS_INLINE; // define the attribute names from the inline layer layer.addProcessing("ITEMS=attribute1,attribute2,attribute3"); // define the class classObj classobj = new classObj(layer); classobj.template = "query"; // making the layer queryable // setting up the text based on multiple attributes classobj.setText("('Shape:' + '[attribute1]' + ' Color:' + '[attribute2]' + ' Size:' + '[attribute3]')"); // define the label classobj.label.outlinecolor = new colorObj(255, 255, 255, 0); classobj.label.force = mapscript.MS_TRUE; classobj.label.size = (double)MS_BITMAP_FONT_SIZES.MS_MEDIUM; classobj.label.position = (int)MS_POSITIONS_ENUM.MS_LC; classobj.label.wrap = ' '; // set up attribute binding classobj.label.setBinding((int)MS_LABEL_BINDING_ENUM.MS_LABEL_BINDING_COLOR, "attribute2"); // define the style styleObj style = new styleObj(classobj); style.color = new colorObj(0, 255, 255, 0); style.setBinding((int)MS_STYLE_BINDING_ENUM.MS_STYLE_BINDING_COLOR, "attribute2"); style.setBinding((int)MS_STYLE_BINDING_ENUM.MS_STYLE_BINDING_SIZE, "attribute3"); Random rand = new Random((int)DateTime.Now.ToFileTime());; // creating the shapes for (int i = 0; i < 10; i++) { shapeObj shape = new shapeObj((int)MS_SHAPE_TYPE.MS_SHAPE_POINT); // setting the shape attributes shape.initValues(4); shape.setValue(0, Convert.ToString(i)); shape.setValue(1, new colorObj(rand.Next(255), rand.Next(255), rand.Next(255), 0).toHex()); shape.setValue(2, Convert.ToString(rand.Next(25) + 5)); lineObj line = new lineObj(); line.add(new pointObj(rand.Next(400) + 25, rand.Next(400) + 25, 0, 0)); shape.add(line); layer.addFeature(shape); } map.width = 500; map.height = 500; map.setExtent(0, 0, 450, 450); map.selectOutputFormat(args[0]); imageObj image = map.draw(); image.save(args[1], map); //perform a query layer.queryByRect(map, new rectObj(0, 0, 450, 450, 0)); resultObj res; shapeObj feature; using (resultCacheObj results = layer.getResults()) { if (results != null && results.numresults > 0) { // extracting the features found layer.open(); for (int j = 0; j < results.numresults; j++) { res = results.getResult(j); feature = layer.getShape(res); if (feature != null) { Console.WriteLine(" Feature: shapeindex=" + res.shapeindex + " tileindex=" + res.tileindex); for (int k = 0; k < layer.numitems; k++) { Console.Write(" " + layer.getItem(k)); Console.Write(" = "); Console.Write(feature.getValue(k)); Console.WriteLine(); } } } layer.close(); } } }