<esri:ArcGISTiledMapServiceLayer ID="BaseLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer" Initialized="ArcGISTiledMapServiceLayer_Initialized" /> <esri:GraphicsLayer ID="MySelectionGraphicsLayer" />
<RadioButton Content="Street Base Topo" IsChecked="True" ToolTipService.ToolTip="World Topo Base Map" GroupName="BaseLayer" Margin="0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerUrlAction TargetName="Map" LayerID="BaseLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton> <RadioButton Content="Imagery2" GroupName="BaseLayer" ToolTipService.ToolTip="ImageService2" Margin="5,0,0,0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerUrlAction TargetName="Map" LayerID="BaseLayer" Url="ImageService2r" /> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton> <RadioButton Content="Imagery1" ToolTipService.ToolTip="Imagery Map1" GroupName="BaseLayer" Margin="5,0,0,0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerUrlAction TargetName="Map" LayerID="BaseLayer" Url="ImageService"/> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton>
You cannot use the SetLayerUrl action for this.
Instead add 3 layers, one for each baselayer. Use the toggle layer visibility action instead for turning on/off layers when the radio buttons are checked.
<!-- Map --> <Grid x:Name="MapDisplayGrid" Margin="0" > <Border x:Name="MapBorder" Margin="0" BorderBrush="#FF666666" BorderThickness="1" > <Grid x:Name="MapGrid" RenderTransformOrigin="0.5,0.5"> <Grid.Projection> <PlaneProjection x:Name="mapPlaneProjection" RotationX="0" /> </Grid.Projection> <esri:Map x:Name="Map" Background="White" Extent="-130,10,-70,60" Loaded="Map_Loaded" > <i:Interaction.Triggers> <i:EventTrigger EventName="MouseEnter"> <ei:ChangePropertyAction TargetName="myMenuItems" PropertyName="Visibility"> <ei:ChangePropertyAction.Value> <Visibility>Collapsed</Visibility> </ei:ChangePropertyAction.Value> </ei:ChangePropertyAction> </i:EventTrigger> </i:Interaction.Triggers> <esri:ArcGISTiledMapServiceLayer ID="BaseLayer" Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" Initialized="ArcGISTiledMapServiceLayer_Initialized" /> <esri:GraphicsLayer ID="MySelectionGraphicsLayer" /> <esri:ArcGISImageServiceLayer ID="ImageLayer" Url="http://imaps.dfg.ca.gov/ArcGIS/rest/services/Base_Remote_Sensing/NAIP_2009/ImageServer" /> <esri:ArcGISImageServiceLayer ID="ImageLayer2" Url="http://imaps.dfg.ca.gov/ArcGIS/rest/services/Base_Remote_Sensing/NAIP_2005/ImageServer" /> </esri:Map> <Rectangle Width="2" Height="10" Fill="Black" Opacity="0.75" HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False" /> <Rectangle Height="2" Width="10" Fill="Black" Opacity="0.75" HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False" /> </Grid> </Border>
<!-- Map Style -->
<Button Style="{StaticResource RibbonButton}" Margin="5,0,5,0" Cursor="Hand" ToolTipService.ToolTip="Toggle Map Rotation" VerticalAlignment="Top" HorizontalAlignment="Center" Padding="5,10,5,10" >
<Grid HorizontalAlignment="Center" Margin="0,-10,0,0">
<StackPanel Orientation="Horizontal" Margin="5,14,5,0" HorizontalAlignment="Center" VerticalAlignment="Center" Effect="{StaticResource miniDropShadow}" >
<RadioButton Content="Streets" IsChecked="True" ToolTipService.ToolTip="Worldwide Street Map" GroupName="BaseLayer" Margin="0" FontSize="11" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<actions:SetLayerUrlAction TargetName="Map" LayerID="BaseLayer" Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
<RadioButton Content="Topo" GroupName="ImageLayer" ToolTipService.ToolTip="United States Topographic Map" Margin="5,0,0,0" FontSize="11" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<actions:ToggleVisibilityAction TargetName="Map" LayerID="ImageLayer" />
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
<RadioButton Content="Imagery" ToolTipService.ToolTip="Worldwide Satellite Imagery Map" GroupName="ImageLayer2" Margin="5,0,0,0" FontSize="11" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<actions:ToggleVisibilityAction TargetName="Map" LayerID="ImageLayer2" />
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
</StackPanel>
<actions:ToggleVisibilityAction TargetName="Map" LayerID="ImageLayer2" />
<CheckBox Content="Imagery" ToolTipService.ToolTip="Worldwide Satellite Imagery Map" Margin="5,0,0,0" FontSize="11" IsChecked="{Binding Layers[ImageLayer2].Visible, ElementName=Map, Mode=TwoWay}" />
namespace ESRI.ArcGIS.SilverlightMapApp.Actions
{
public class SetLayerVisibilityAction : TargetedTriggerAction<Map>
{
/// <summary>
/// Invokes the action.
/// </summary>
/// <param name="parameter">The parameter to the action. If the Action does not require a parameter, the parameter may be set to a null reference.</param>
protected override void Invoke(object parameter)
{
if (!string.IsNullOrEmpty(LayerID))
{
Layer l = Target.Layers[LayerID];
l.Visible = Visible;
}
}
/// <summary>
/// Gets or sets the ID of layer to work with.
/// </summary>
/// <value>The layer ID.</value>
public string LayerID
{
get { return (string)GetValue(LayerIDProperty); }
set { SetValue(LayerIDProperty, value); }
}
/// <summary>
/// Identifies the <see cref="LayerID"/> dependency property.
/// </summary>
public static readonly DependencyProperty LayerIDProperty =
DependencyProperty.Register("LayerID", typeof(string), typeof(SetLayerVisibilityAction), null);
/// <summary>
/// Gets or sets the visibility of the layer.
/// </summary>
/// <value>The layer ID.</value>
public bool Visible
{
get { return (bool)GetValue(VisibleProperty); }
set { SetValue(VisibleProperty, value); }
}
/// <summary>
/// Identifies the <see cref="Visible"/> dependency property.
/// </summary>
public static readonly DependencyProperty VisibleProperty =
DependencyProperty.Register("Visible", typeof(bool), typeof(SetLayerVisibilityAction), null);
}
}
<i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="BaseLayer" Visible="False"/> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer1" Visible="False"/> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer2" Visible="True"/> </i:EventTrigger> </i:Interaction.Triggers>
<RadioButton Content="Streets" IsChecked="True" ToolTipService.ToolTip="Worldwide Street Map" GroupName="BaseLayer" Margin="0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="BaseLayer" Visible="False"/> <!--actions:SetLayerUrlAction TargetName="Map" LayerID="BaseLayer" Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/--> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton> <RadioButton Content="Topo" GroupName="BaseLayer" ToolTipService.ToolTip="United States Topographic Map" Margin="5,0,0,0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer1" Visible="False"/> <!--actions:SetLayerUrlAction TargetName="Map" LayerID="BaseLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer"/--> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton> <RadioButton Content="Imagery" ToolTipService.ToolTip="Worldwide Satellite Imagery Map" GroupName="BaseLayer" Margin="5,0,0,0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer2" Visible="True"/> <!--actions:SetLayerUrlAction TargetName="Map" LayerID="BaseLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer"/--> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton>
<esri:Map x:Name="Map" Background="White" Extent="-130,10,-70,60" Loaded="Map_Loaded" > <i:Interaction.Triggers> <i:EventTrigger EventName="MouseEnter"> <ei:ChangePropertyAction TargetName="myMenuItems" PropertyName="Visibility"> <ei:ChangePropertyAction.Value> <Visibility>Collapsed</Visibility> </ei:ChangePropertyAction.Value> </ei:ChangePropertyAction> </i:EventTrigger> </i:Interaction.Triggers> <esri:ArcGISTiledMapServiceLayer ID="BaseLayer" Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" Initialized="ArcGISTiledMapServiceLayer_Initialized" /> <esri:GraphicsLayer ID="MySelectionGraphicsLayer" /> <esri:ArcGISTiledMapServiceLayer ID="ImageLayer2" Url="http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer" /> <esri:ArcGISTiledMapServiceLayer ID="ImageLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer" /> </esri:Map>
<RadioButton Content="Streets" IsChecked="True" ToolTipService.ToolTip="Worldwide Street Map" GroupName="BaseLayer" Margin="0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="BaseLayer" Visible="True"/> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer" Visible="False"/> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer2" Visible="False"/> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton> <RadioButton Content="Topo" GroupName="BaseLayer" ToolTipService.ToolTip="United States Topographic Map" Margin="5,0,0,0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="BaseLayer" Visible="False"/> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer" Visible="True"/> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer2" Visible="False"/> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton> <RadioButton Content="Imagery" ToolTipService.ToolTip="Worldwide Satellite Imagery Map" GroupName="BaseLayer" Margin="5,0,0,0" FontSize="11" > <i:Interaction.Triggers> <i:EventTrigger EventName="Checked"> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="BaseLayer" Visible="False"/> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer" Visible="False"/> <actions:SetLayerVisibilityAction TargetName="Map" LayerID="ImageLayer2" Visible="True"/> </i:EventTrigger> </i:Interaction.Triggers> </RadioButton>
<esri:ArcGISTiledMapServiceLayer ID="BaseLayer" Url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" Initialized="ArcGISTiledMapServiceLayer_Initialized" /> <esri:GraphicsLayer ID="MySelectionGraphicsLayer" /> <esri:ArcGISTiledMapServiceLayer ID="ImageLayer2" Visible="False" Url="http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer" /> <esri:ArcGISTiledMapServiceLayer ID="ImageLayer" Visible="False" Url="http://services.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer" />