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; }
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.