ArcGIS Server开发——标注

来源:互联网 发布:土豆mac 编辑:程序博客网 时间:2024/05/16 15:08
 

[VB.NET写法]
Private Sub LabelFeature(ByVal pFeaturelayer As IFeatureLayer, ByVal pServerContext As IServerContext)
   Dim pGeoFeatureLayer As IGeoFeatureLayer
   pGeoFeatureLayer = pFeaturelayer
   pGeoFeatureLayer .AnnotationProperties.Clear()
   Dim pAnnoLayerProColl As IAnnotateLayerPropertiesCollection
   Dim pLabelEngine As ILabelEngineLayerProperties
   pAnnoLayerProColl = pGeoFeatureLayer .AnnotationProperties
   Dim pAnnoLayerProps As IAnnotateLayerProperties
   pLabelEngine = pServerContext.CreateObject("esriCarto.LabelEngineLayerProperties") 
   pLabelEngine .Expression = "[Filed]"
   pAnnoLayerProps = pLabelEngine 
   'pAnnoLayerProps.LabelWhichFeatures = esriSelectedFeatures '转换Graphic时可以利用 
   pAnnoLayerProColl .Add(pAnnoLayerProps)
   pGeoFeatureLayer.DisplayAnnotation = True
End Sub     

[C#写法]
private void LabelField(IFeatureLayer pFeatureLayer,IServerContext pServerContext)
  { 
   IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer;
   pGeoFeatureLayer.AnnotationProperties.Clear();
   IAnnotateLayerPropertiesCollection pAnnoLayerPropsColl = pGeoFeatureLayer.AnnotationProperties;
   ILabelEngineLayerProperties pLabelEngine;
   
   pLabelEngine = pServerContext.CreateObject("esriCarto.LabelEngineLayerProperties") as     ILabelEngineLayerProperties;
   pLabelEngine.Expression = "[Field]";
   IAnnotateLayerProperties pAnnoLayerProps = pLabelEngine as IAnnotateLayerProperties;
   pAnnoLayerPropsColl.Add(pAnnoLayerProps);
   pGeoFeatureLayer.DisplayAnnotation = true; 
  }

Feedback

#1楼    回复  引用  查看    

2005-05-15 18:23 by edison1024
土匪兄,谢谢。好文。

#2楼    回复  引用  查看    

2005-06-30 11:15 by zls
我试了一下,屏幕上怎么没出现标注啊,不知是什么原因啊?

#3楼 [楼主]   回复  引用  查看    

2005-06-30 14:11 by 土匪头
layerDescription.ShowLabels = true;
webMap.Refresh();

#4楼    回复  引用  查看    

2005-07-01 15:12 by zls
谢谢!我是这样调用上面函数的
using (WebMap webMap = Map1.CreateWebMap())
{IMapServerObjects mapo = webMap.MapServer as IMapServerObjects;
IMap map = mapo.get_Map(webMap.DataFrame);
IFeatureLayer fl = map.get_Layer(0) as IFeatureLayer;
IServerContext sc = webMap.ServerContext;
LabelField(fl,sc);
webMap.Refresh();
}不知有没有错。 在 pLabelEngine.Expression = "[Field]"; 我的字段填了具体的字段。运行后一点变化都没有。那这句加在那里layerDescription.ShowLabels = true;它查询、调用哪个接口。

#5楼 [楼主]   回复  引用  查看    

2005-07-01 15:27 by 土匪头
加在webMap.Refresh()前

#6楼    回复  引用  查看    

2005-07-04 10:05 by zls
layerDescription.ShowLabels = true这句话跟上下语句没有联系,会出错啊。layerDescription是那里的对象或类没有具体声明啊,我不知道它从那里来的。谢谢土匪兄。

#7楼    回复  引用  查看    

2005-07-04 13:49 by 土匪头
IMapDescription mapDescription = webMap.MapDescription;
ILayerDescription layerDesc = mapDescription.LayerDescriptions.get_Element(labelID);

#8楼    回复  引用  查看    

2005-07-04 16:21 by zls
可以显示出来了。土匪兄,非常谢谢!!!

#9楼    回复  引用  查看    

2005-08-05 16:31 by zls [未注册用户]
土匪兄你好!我把上面的方法改成web服务发布然后再去调用这个方法,为什么这样做不行?

#10楼 [楼主]   回复  引用  查看    

2005-08-05 16:36 by 土匪头
既然Web应用可以执行,说明程序本身没有问题。通过Web服务的方式无法访问,只能说明你写的Web服务的规范、协议或者接口设置有问题。

#11楼    回复  引用  查看    

2005-08-08 09:03 by zls [未注册用户]
提示说“无法序列化接口 ESRI.ArcGIS.Carto.IFeatureLayer”不知道那里错了

#12楼    回复  引用  查看    

2005-08-11 10:14 by zls
我知道了,不能用接口做传输参数了。
不过请教一下土匪兄,我想对arcgis server摸板里的web services catalog Application摸板进行扩张,不知如何下手,你能否给点建议?非常感谢!!

#13楼    回复  引用  查看    

2006-03-10 23:20 by 建筑网 [未注册用户]
我顶.......好...我在顶

#14楼    回复  引用  查看    

2006-03-10 23:20 by 建筑网 [未注册用户]
我顶.......好...我在顶

#15楼    回复  引用  查看    

2006-08-10 09:09 by offer [未注册用户]
ILayerDescription layerDesc = mapDescription.LayerDescriptions.get_Element(labelID); 请问这里的labelID 是什么?怎么填写?

#16楼    回复  引用  查看    

2006-08-10 09:11 by offer [未注册用户]
还有,请问效果是像Tooltip那样吗 ?

#17楼    回复  引用  查看    

2006-08-10 09:16 by offer [未注册用户]
ILayerDescription layerDesc = mapDescription.LayerDescriptions.get_Element(labelID);
layerDescription.ShowLabels = true;这两句话是不是有点不一致啊上面定义的是layerDesc,后面是layerDescription.ShowLabels ???

还是有别的意思?我是新手不好意思,需要明白点的

#18楼    回复  引用  查看    

2006-08-16 10:31 by offer [未注册用户]
??

#19楼    回复  引用  查看    

2006-08-16 17:04 by offer [未注册用户]
还有,请问效果是像Tooltip那样吗 ??
为什么没有人回答我啊 ???
急啊

#20楼    回复  引用  查看    

2006-09-09 13:07 by flashsky [未注册用户]
因为毕业后就不在搞GIS了,所以一直没有时间来回复问题,呵呵!

#21楼    回复  引用  查看    

2006-10-10 16:43 by wjb [未注册用户]
各位好,labelID是从那里来的啊,真抱歉,我看不懂

#22楼 [TrackBack]   回复  引用  查看    

2007-07-19 13:44 by GIS云中飞鹏
[VB.NET写法]PrivateSubLabelFeature(ByValpFeaturelayerAsIFeatureLayer,ByValpServerContextAsIS...
[引用提示]GIS云中飞鹏引用了该文章, 地址: http://www.cnblogs.com/gispeng/archive/2007/07/19/823833.html

#23楼 [TrackBack]   回复  引用  查看    

2007-07-30 09:02 by kylinindotnet
[VB.NET写法]PrivateSubLabelFeature(ByValpFeaturelayerAsIFeatureLayer,ByValpServerContextAsIS...
[引用提示]kylinindotnet引用了该文章, 地址: http://www.cnblogs.com/kylinindotnet/archive/2007/07/30/835934.html

#24楼    回复  引用  查看    

2007-11-21 15:35 by zz啊 [未注册用户]
protected void Button1_Click(object sender, EventArgs e)
{
m_agsBase.InitializeVar(Map1);
IMap pMap = m_agsBase.GetMap();
//取地图上的第一个图层
ILayer pLayer = pMap.get_Layer(0);
IFeatureLayer pFeatureLyr = pLayer as IFeatureLayer;
IGeoFeatureLayer pGeoFeatLyr = pFeatureLyr as IGeoFeatureLayer;

IAnnotateLayerPropertiesCollection pAnnoLayerPropsColl = pGeoFeatLyr.AnnotationProperties;
pAnnoLayerPropsColl.Clear();

ILabelEngineLayerProperties pLabelEngineProps;

IServerContext pSOC = m_agsBase.GetSOC();
pLabelEngineProps = pSOC.CreateObject("esriCarto.LabelEngineLayerProperties") as ILabelEngineLayerProperties;
pLabelEngineProps.Expression = "[支干渠]";
IAnnotateLayerProperties pAnnoLayerProps = pLabelEngineProps as IAnnotateLayerProperties;
pAnnoLayerPropsColl.Add(pAnnoLayerProps);
pGeoFeatLyr.DisplayAnnotation = true;

ESRI.ArcGIS.ADF.ArcGISServer.MapDescription mapDesc = m_agsBase.GetMapDescription();

ESRI.ArcGIS.ADF.ArcGISServer.LayerDescription LayerDesc = mapDesc.LayerDescriptions[0] as ESRI.ArcGIS.ADF.ArcGISServer.LayerDescription;

LayerDesc.ShowLabels = true;

Map1.Refresh();

}
为什么出不来亚。。
原创粉丝点击