1 votos

Cómo hacer zoom a la característica en VB .net

Estoy tratando de hacer un zoom a una característica como en Arcmap pero en VB.net. Estoy usando Axmapcontrol para mostrar el mapa.
He probado lo siguiente:

Dim pCmdItem As ICommandItem
Dim pUID As New UID
pUID.Value = "{AB073B49-DE5E-11D1-AA80-00C04FA37860}"
pCmdItem = CommandBars.Find(pUID)
pCmdItem.Execute()  

pero muestra el siguiente error:

Reference to a non-shared member requires an object reference.

He encontrado una solución que sugiere cambiar mytype de empty a WindowsForms en el archivo vbproj, pero ya contiene el valor correcto. ¿Hay alguna manera de hacer zoom a una función en un Axmapcontrol en VB.net?

1voto

John Kramlich Puntos 286

Este es un enfoque, construyes la extensión a la que quieres hacer el zoom recorriendo la selección. La siguiente función VBA toma como entrada un ILayer objeto.

Public Sub ZoomToSelected(ByRef pLayer As ILayer)

    If TypeOf pLayer Is IFeatureLayer Then
        ' Get selection on layer
        Dim pFeatureLayer As IFeatureLayer
        Set pFeatureLayer = pLayer
        Dim pFeatureSelection As IFeatureSelection
        Set pFeatureSelection = pFeatureLayer

        If pFeatureSelection.SelectionSet.Count > 0 Then
            ' Layer has a selection so process it
            Dim pEnvelope As IEnvelope
            Set pEnvelope = New Envelope
            pEnvelope.SetEmpty
            Dim pFeature As IFeature

            ' Create a cursor over selection
            Dim pFeatureCursor As IFeatureCursor
            pFeatureSelection.SelectionSet.Search Nothing, True, pFeatureCursor
            Set pFeature = pFeatureCursor.NextFeature
            Dim pEnv As IEnvelope

            ' Loop unioning extents
            Do While Not pFeature Is Nothing
                Set pEnv = pFeature.Extent
                pEnvelope.Union pEnv
                Set pFeature = pFeatureCursor.NextFeature
            Loop

            ' Get active view an reset extent
            Dim pMXD As IMxDocument
            Set pMXD = ThisDocument
            Dim pMap As IMap
            Set pMap = pMXD.FocusMap
            Dim pAV As IActiveView
            Set pAV = pMap
            pAV.Extent = pEnvelope
            pAV.Refresh
        End If
    End If
End Sub

Es posible que desee ajustar el código para ampliar la extensión antes de establecer el Activeview en ella. Esto se puede hacer a través de la función IEnvelope interfaz

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X