阅读:1754回复:3
请教:怎么给图层标注注记呢?
<P>大家帮帮忙拉,3Q</P>
|
|
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> |
|
|
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 |
|
3楼#
发布于:2006-06-29 20:18
<P>3Q,问题解决拉</P>
|
|