[mapguide-users] Initializing resourceService within VB.Net

Kori Maleski km at pat.ca
Fri Apr 7 13:49:24 EDT 2006


Merry Christmas

I deserve a beer for this...



#Region "::: MapGuide API Functions"

        Public Function ZoomSelection(ByVal l_sZoomSelectionType As String,
ByVal l_sSession As String, ByVal l_sMapName As String, ByVal l_sLayerGroups
As String, ByVal l_sLayer As String, ByVal l_sFilter As String, Optional
ByVal l_dMinY As Double = 0, Optional ByVal l_dMinX As Double = 0, Optional
ByVal l_dMaxY As Double = 0, Optional ByVal l_dMaxX As Double = 0) As String


            Dim l_dY As Double = 0
            Dim l_dX As Double = 0
            Dim l_dWidth As Double = 0
            Dim l_dHeight As Double = 0

            'Connect
            MapGuideApi.InitializeSockets()
            'InitializeWebTier()

            'Establish Map session
            Dim l_oCred As New MgUserInformation(l_sSession)

            'connect to the site and get a feature service and a resource
service instances
            Dim l_oSite As New MgSiteConnection()
            l_oSite.Open(l_oCred)

            Dim l_oFeatureSrvc As MgFeatureService =
l_oSite.CreateService(MgServiceType.FeatureService)
            Dim l_oResourceSrvc As MgResourceService =
l_oSite.CreateService(MgServiceType.ResourceService)


            'Create a temporary map runtime object
            Dim l_oMap As New MgMap()
            l_oMap.Open(l_oResourceSrvc, l_sMapName)

            'If performing a Zoom
            If l_sZoomSelectionType <> "SelectAll" Then

                Dim l_oMGCoordinateSystemFactory As New
MgCoordinateSystemFactory
                Dim l_oMGGeometryFactory As New MgGeometryFactory
                'Get Current map projection
                Dim l_sWKTproj As String = l_oMap.GetMapSRS()
                'Create Coordinate System object to Reproject points
                Dim l_oMGCoordinateSystem As MgCoordinateSystem =
l_oMGCoordinateSystemFactory.Create(l_sWKTproj)
                'Lower Left Coordinate
                Dim l_oMGCoordinateLatLonLL As MgCoordinate =
l_oMGGeometryFactory.CreateCoordinateXY(l_dMinX, l_dMinY)
                Dim l_oMGCoordinateXYLL As MgCoordinate =
l_oMGCoordinateSystem.ConvertFromLonLat(l_oMGCoordinateLatLonLL)
                'Upper Right Coordinate
                Dim l_oMGCoordinateLatLonUR As MgCoordinate =
l_oMGGeometryFactory.CreateCoordinateXY(l_dMaxX, l_dMaxY)
                Dim l_oMGCoordinateXYUR As MgCoordinate =
l_oMGCoordinateSystem.ConvertFromLonLat(l_oMGCoordinateLatLonUR)

                If l_oMGCoordinateXYUR.GetX() = l_oMGCoordinateXYLL.GetX()
And l_oMGCoordinateXYUR.GetY() - l_oMGCoordinateXYLL.GetY() Then
                    l_dX = l_oMGCoordinateXYUR.GetX()
                    l_dY = l_oMGCoordinateXYUR.GetY()
                Else
                    l_dX = (l_oMGCoordinateXYUR.GetX() -
l_oMGCoordinateXYLL.GetX()) / 2 + l_oMGCoordinateXYLL.GetX()
                    l_dY = (l_oMGCoordinateXYUR.GetY() -
l_oMGCoordinateXYLL.GetY()) / 2 + l_oMGCoordinateXYLL.GetY()
                End If

                'Get Map Width and Height
                l_dWidth = (l_oMGCoordinateXYUR.GetX() -
l_oMGCoordinateXYLL.GetX()) * 2
                l_dHeight = (l_oMGCoordinateXYUR.GetY() -
l_oMGCoordinateXYLL.GetY()) * 2
                'Which one is bigger
                If l_dHeight > l_dWidth Then
                    l_dWidth = l_dHeight

                End If
            End If

            Dim l_oLayerGroup As MgLayerGroup = Nothing
            Dim l_cLayerGroups As MgLayerGroupCollection =
l_oMap.GetLayerGroups()

            Dim l_oLayer As MgLayer = Nothing
            Dim l_cLayers As MgLayerCollection = l_oMap.GetLayers()

            'Get Layer by Name
            l_oLayer = l_cLayers.GetItem(l_sLayer)

            Dim l_sFeatureClassName As String =
l_oLayer.GetFeatureClassName()
            'Set Filter to Selection IDs
            Dim l_oQuery As New MgFeatureQueryOptions()
            l_oQuery.SetFilter(l_sFilter)

            'Get Feature Resource
            Dim l_ofeatureSource As MgResourceIdentifier = New
MgResourceIdentifier(l_oLayer.GetFeatureSourceId())
            'Get Feature Reader
            Dim l_ofeatures As MgFeatureReader =
l_oFeatureSrvc.SelectFeatures(l_ofeatureSource, l_sFeatureClassName,
l_oQuery)

            'Turn Layer Group Visibility On
            If l_sLayerGroups.Contains("|") = False Then
                l_oLayerGroup = l_cLayerGroups.GetItem(l_sLayerGroups)
                l_oLayerGroup.SetVisible(True)

            Else 'Nested Layer Groups
                ' Split LayerGroup parameter
                Dim l_oLayerGroupArray As String() =
l_sLayerGroups.Split("|"c)
                Dim i As Integer
                For i = 0 To l_oLayerGroupArray.GetUpperBound(0)
                    l_oLayerGroup =
l_cLayerGroups.GetItem(l_oLayerGroupArray(i).ToString())
                    l_oLayerGroup.SetVisible(True)
                Next
            End If


            'Turn Layer Visibility On
            l_oLayer.SetVisible(True)
            'Save Map
            l_oMap.Save(l_oResourceSrvc)

            'Generate XML to selection this feature
            Dim l_oSel As MgSelection = New MgSelection(l_oMap)
            'Add Features to selection
            l_oSel.AddFeatures(l_oLayer, l_ofeatures, 0)

            Dim selText As String = l_oSel.ToXml()



            'Set Javascript Function

            'If performing a Zoom and Select
            If l_sZoomSelectionType = "ZoomSelected" Then

                ZoomSelection = String.Format("ZoomSelection( {0}, {1}, {2},
'{3}' );", l_dX, l_dY, l_dWidth, selText)
                Session("MapSelectionDataXML") = selText
                'Zoom Only
            ElseIf l_sZoomSelectionType = "ZoomGoTo" Then
                ZoomSelection = String.Format("ZoomGoTo( {0}, {1}, '1200'
);", l_dX, l_dY)

                'Select Only
            ElseIf l_sZoomSelectionType = "SelectAll" Then
                ZoomSelection = String.Format("SelectAll('{0}' );", selText)
                Session("MapSelectionDataXML") = selText
            End If


            'Close Connection
            MapGuideApi.TerminateSockets()

        End Function

#End Region




Kori Maleski
Senior Technical Consultant 

 

Pacific Alliance Technologies
Suite 400 - 534 17 Ave. SW Calgary, AB CANADA T2S 0B1
TEL: 403.770.1917	 FAX: 877.691.9149 TOL: 877.691.9171  www.pat.ca


--
View this message in context: http://www.nabble.com/Initializing-resourceService-within-VB.Net-t1409976.html#a3808359
Sent from the OSGeo MapGuide forum at Nabble.com.





More information about the Mapguide-users mailing list