- 积分
- 4259
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-27
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
问题:MeteoInfo类库支持站点数据stationInfo添加Label,但是目前找到的解决方法有两个:
1)调用类库中的frmLabelSet窗体,可以通过交互界面设置具体的label信息
2)直接创建VectorLayer aLayer ,通过aLayer.LabelSet中的参数,设置FieldName,XOffset,YOffset,DrawLabels等信息,然后aLayer.AddLabels();
上面两种方法,都局限在我必须通过交互方式,在layersLegend1.SelectedNode选取我要添加的图层。
如何不用交互选取,直接在layersLegend1.ActiveMapFrame.AddLayer(aLayer);之后,直接添加自定义的标签信息?
目前我的代码如下:
- private void 读取lonlat信息ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- //打开latlon数据
- //Create a MeteoDataInfo object
- MeteoDataInfo aDataInfo = new MeteoDataInfo();
- //Open latlon data file
- string aFile = Application.StartupPath + "\\latlon.csv";
- aDataInfo.OpenLonLatData(aFile);
- //Get StationData
- StationInfoData Data = aDataInfo.GetStationInfoData();
- //Create a legend scheme
- LegendScheme aLS = LegendManage.CreateSingleSymbolLegendScheme(ShapeTypes.Point, Color.Red, 6);
- //导入配色方案
- aLS.ImportFromXMLFile("latlon.lgs");
- MapLayer aLayer = new MapLayer();
- if (Data != null)
- {
- aLS.MissingValue = aDataInfo.MissingValue;
- aLayer = DrawMeteoData.CreateSTInfoLayer(Data, aLS, "站点信息信息");
-
- //Add layer
- layersLegend1.ActiveMapFrame.AddLayer(aLayer);
- layersLegend1.ActiveMapFrame.MoveLayer(aLayer.Handle, 0);
- layersLegend1.Refresh();
- }
- }
- private void 打开标签ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (layersLegend1.SelectedNode == null)
- return;
- if (layersLegend1.SelectedNode.NodeType == NodeTypes.LayerNode)
- {
- LayerNode aLN = (LayerNode)layersLegend1.SelectedNode;
- MapLayer aMLayer = aLN.MapFrame.MapView.GetLayerFromHandle(aLN.LayerHandle);
-
- if (aMLayer.LayerType == LayerTypes.VectorLayer)
- {
- VectorLayer aLayer = (VectorLayer)aMLayer;
- if (aLayer.ShapeNum > 0)
- {
- //通过交互窗体,设置添加标签信息
- //frmLabelSet aFrmLabel = new frmLabelSet(layersLegend1.ActiveMapFrame.MapView);
- //aFrmLabel.Layer = aLayer;
- //aFrmLabel.Show(this);
- //直接添加标签信息,屏蔽交互窗体
- aLayer.RemoveLabels();
- aLayer.LabelSet.FieldName = "Station_name";
- aLayer.LabelSet.AvoidCollision = true;
- aLayer.LabelSet.LabelAlignType = (AlignType)Enum.Parse(typeof(AlignType), "Right", true);
- aLayer.LabelSet.XOffset = 0;
- aLayer.LabelSet.YOffset = -5;
- aLayer.LabelSet.LabelColor = Color.Red;
- aLayer.LabelSet.DrawLabels = true;
- aLayer.LabelSet.ColorByLegend = true;
- aLayer.LabelSet.AutoDecimal = true;
- aLayer.AddLabels();
- }
- }
- }
- }
复制代码
|
|