wuyue521_0
路人甲
路人甲
  • 注册日期2006-06-22
  • 发帖数47
  • QQ
  • 铜币272枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1754回复:3

请教:怎么给图层标注注记呢?

楼主#
更多 发布于:2006-06-27 18:34
<P>大家帮帮忙拉,3Q</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2006-06-28 11:32
<PRE>    下面的代码可以实现对mapcontrol上第一个图层进行标注,注意标注字段名称</PRE><PRE>Dim pGeoLayer As IGeoFeatureLayer
    Set pGeoLayer = MapControl1.Layer(0)
    Dim pLabelEngine As ILabelEngineLayerProperties
    pGeoLayer.AnnotationProperties.Clear
    Set pLabelEngine = New LabelEngineLayerProperties
    
    Dim sLabel As String
    sLabel = "int([" ; "SHAPE_area" ; "])"
    
    pLabelEngine.Expression = sLabel
    pLabelEngine.IsExpressionSimple = True
    Dim pBOLayerProps As IBasicOverposterLayerProperties
    Set pBOLayerProps = New BasicOverposterLayerProperties
    pBOLayerProps.NumLabelsOption = esriOneLabelPerShape
    Set pLabelEngine.BasicOverposterLayerProperties = pBOLayerProps
    pGeoLayer.AnnotationProperties.Add pLabelEngine
    pGeoLayer.DisplayAnnotation = True
    MapControl1.ActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing
</PRE>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
semon1981
路人甲
路人甲
  • 注册日期2006-06-04
  • 发帖数28
  • QQ
  • 铜币198枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-06-29 16:41
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">Public Sub ShowLabel()<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Dim pMxDocument         As IMxDocument<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Dim pGeoFeatureL        As IGeoFeatureLayer<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Dim pLineLabelP         As ILineLabelPosition<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Dim pLabelEngineLP      As ILabelEngineLayerProperties<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Dim pAnnotateLayerP     As IAnnotateLayerProperties<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    <p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 16pt; mso-line-height-alt: 0pt; mso-char-indent-count: 2.0">On Error GoTo ErrorHandler<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Set pMxDocument = ThisDocument<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Set pGeoFeatureL = pMxDocument.FocusMap.Layer(0)<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    pGeoFeatureL.AnnotationProperties.Clear<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Set pLineLabelP = New LineLabelPosition<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    With pLineLabelP<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .Above = False<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .AtEnd = False<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .Below = False<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .Horizontal = False<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .InLine = True<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .OnTop = True<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .Parallel = True<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .ProduceCurvedLabels = True<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    End With<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Set pLabelEngineLP = New LabelEngineLayerProperties<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    With pLabelEngineLP<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        Set .Symbol = New TextSymbol<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        '方法一 <p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .IsExpressionSimple = False<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .Expression = "Function FindLabel ( [ZONENAME27] ,[FID])" _<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">            ; "FindLabel = [ZONENAME27] ; [FID]" _<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">            ; " End Function"<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">            <p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">'        '方法二<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">'        .IsExpressionSimple = True<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">'        .Expression = "[ZONENAME27]"//这里一定要有‘[]’<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .BasicOverposterLayerProperties.LineLabelPosition = pLineLabelP<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    End With <p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">   <p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 16pt; mso-line-height-alt: 0pt; mso-char-indent-count: 2.0">Set pAnnotateLayerP = pLabelEngineLP<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    With pAnnotateLayerP<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .DisplayAnnotation = True<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        Set .FeatureLayer = pGeoFeatureL<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .LabelWhichFeatures = esriVisibleFeatures<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">        .WhereClause = ""<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    End With<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    pGeoFeatureL.AnnotationProperties.Add pLabelEngineLP<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    pGeoFeatureL.DisplayAnnotation = True<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    pMxDocument.ActiveView.Refresh<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    Exit Sub<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt"><p> </p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; mso-line-height-alt: 0pt">    MsgBox Err.Description<p></p></P>End Sub
举报 回复(0) 喜欢(0)     评分
wuyue521_0
路人甲
路人甲
  • 注册日期2006-06-22
  • 发帖数47
  • QQ
  • 铜币272枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-06-29 20:18
<P>3Q,问题解决拉</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部