Private Sub MainPage_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded 'MessageBox.Show("MainPage_Loaded") ' Create an ArcGISDynamicServiceLayer. The Map object (a Map class) was previously defined in XAML. Dim myArcGISDynamicMapServiceLayer As New ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer myArcGISDynamicMapServiceLayer.Url = "http://www..../ArcGIS/rest/services/Atlas/Atlas/MapServer" myArcGISDynamicMapServiceLayer.ID = "MCAtlasService" myArcGISDynamicMapServiceLayer.Visible = False AddHandler myArcGISDynamicMapServiceLayer.Initialized, AddressOf myArcGISDynamicMapServiceLayer_Initialized MyMap.Layers.Add(myArcGISDynamicMapServiceLayer) End Sub Private Sub myArcGISDynamicMapServiceLayer_Initialized(ByVal sender As Object, ByVal e As EventArgs) 'Throw New NotImplementedException Dim myArcGISDynamicMapServiceLayer As ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer = MyMap.Layers("MCAtlasService") Dim myLayerInfo() As ESRI.ArcGIS.Client.LayerInfo = myArcGISDynamicMapServiceLayer.Layers Dim nameArray() As String = {"Townships", "Sections", "City Limits", "Counties"} Dim basePath As String = "http://www..../ArcGIS/rest/services/Atlas/Atlas/MapServer/" Dim layerPath As String = "NA" If myLayerInfo.Length > 0 Then For Each l In nameArray Dim i As Integer For i = 0 To myLayerInfo.Length - 1 'MessageBox.Show(myLayerInfo(i).Name + " | " + l) If myLayerInfo(i).Name = l Then layerPath = basePath + myLayerInfo(i).ID.ToString Dim myFeatureLayer As New ESRI.ArcGIS.Client.FeatureLayer myFeatureLayer.Url = layerPath myFeatureLayer.ID = myLayerInfo(i).Name If Not (getLegend(myLayerInfo(i).Name) Is Nothing) Then myFeatureLayer.FeatureSymbol = getLegend(myLayerInfo(i).Name) End If If Not (getRenderer(myLayerInfo(i).Name) Is Nothing) Then myFeatureLayer.Renderer = getRenderer(myLayerInfo(i).Name) End If 'myFeatureLayer.MapTip. MyMap.Layers.Add(myFeatureLayer) End If Next Next End If End Sub Private Function getLegend(ByVal layername As String) Select Case layername Case "Sections" getLegend = SectionsSymbol Case "Townships" getLegend = TownshipsSymbol Case "City Limits" getLegend = CityLimitSymbol Case "Counties" getLegend = CountiesSymbol Case Else getLegend = Nothing End Select End Function Private Function getRenderer(ByVal layername As String) Select Case layername Case "Major Roads" getRenderer = RoadRenderer Case Else getRenderer = Nothing End Select End Function
Private Function GetTargetLayer(ByVal Map As Map, ByVal strLayerName As String) As String Try Dim layerCollection As LayerCollection = Map.Layers Dim basePath As String = "http://www.co.missoula.mt.us/ArcGIS/rest/services/Atlas/Atlas/MapServer/" If Not (layerCollection Is Nothing) Then For Each lyr In layerCollection If (TypeOf (lyr) Is ArcGISDynamicMapServiceLayer) Then Dim dynamicServiceLayer As ArcGISDynamicMapServiceLayer = lyr 'Dim layerInfo As New LayerInfo For Each layerInfo In dynamicServiceLayer.Layers If layerInfo.Name = strLayerName Then MessageBox.Show(CStr(layerInfo.ID)) GetTargetLayer = basePath + layerInfo.ID.ToString End If Next End If Next Else GetTargetLayer = "NA" End If Catch ex As Exception GetTargetLayer = "NA" End Try End Function
<esri:FeatureLayer ID="Counties" Visible="False" Url="http://www.testlocation.us/ArcGIS/rest/services/Atlas/Atlas/MapServer/22" /> <esri:FeatureLayer ID="Counties" Visible="False" Url="{Binding testID}" /> <esri:FeatureLayer ID="Counties" Visible="False" Url="http://www.testlocation.us/ArcGIS/rest/services/Atlas/Atlas/MapServer/" + {Binding TestID} />
Wonderful! But you would have to be a C# guy! No problem. Us VB neanderthals will cope.;)
private static int GetTargetLayer(Map map, string layerName) { var retVal = -1; var layerCollection = map.Layers; if (layerCollection != null) { foreach (var layer in layerCollection) { if (!(layer is ArcGISDynamicMapServiceLayer)) continue; var dynamicLayer = layer as ArcGISDynamicMapServiceLayer; if (dynamicLayer.Layers != null) { foreach (var layerInfo in dynamicLayer.Layers) { if (layerInfo.Name == layerName) { retVal = layerInfo.ID; break; } } } } } return retVal; }
//C# //returns -1 if layer not found private static int GetTargetLayer(Map map, string layerName) { var retVal = -1; var layerCollection = map.Layers; if (layerCollection != null) { //Check only ArcGISDynamicMapServiceLayer with sublayers foreach (var dynamicLayer in layerCollection.OfType<ArcGISDynamicMapServiceLayer>().Select(layer => layer).Where(dynamicLayer => dynamicLayer.Layers != null)) { //Check for the layer name foreach (var layerInfo in dynamicLayer.Layers.Where(layerInfo => layerInfo.Name == layerName)) { //Layer name found, return the ID retVal = layerInfo.ID; break; } } } return retVal; }
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.