微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ArcGIS API for Silverlight 查询点闪烁显示

主要样式如下代码段内所示:
<esri:MarkerSymbol x:Name="DefaultMarkerSymbol">
 ....
</esri:MarkerSymbol>


...
xmlns:esri="http://schemas.esri.com/arcgis/client/2009"
...

<Grid.Resources>
     <esri:MarkerSymbol x:Name="DefaultMarkerSymbol">
                <esri:MarkerSymbol.ControlTemplate>
                    <ControlTemplate>
                        <Canvas>
                            <vsm:visualstatemanager.VisualStateGroups>
                                <vsm:VisualStateGroup x:Name="CommonStates">
                                    <vsm:VisualState x:Name="normal">
                                        <Storyboard RepeatBehavior="Forever">

                                            <DoubleAnimation BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" From="1" To="10" Duration="00:00:01" />

                                            <DoubleAnimation BeginTime="0:0:0" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" From="1" To="10" Duration="00:00:01" />

                                            <DoubleAnimation BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.Opacity)" From="1" To="0" Duration="00:00:01" />
                                        </Storyboard>
                                    </vsm:VisualState>

                                </vsm:VisualStateGroup>
                            </vsm:visualstatemanager.VisualStateGroups>
                            <Ellipse Height="10" Width="10" Canvas.Left="-5" Canvas.Top="-5" RenderTransformOrigin="0.5,0.5" x:Name="ellipse" IsHitTestVisible="False">
                                <Ellipse.RenderTransform>
                                    <ScaleTransform />
                                </Ellipse.RenderTransform>
                                <Ellipse.Fill>
                                    <RadialGradientBrush>
                                        <GradientStop Color="#00FF0000" />
                                        <GradientStop Color="#FFFF0000" Offset="0.25" />
                                        <GradientStop Color="#00FF0000" Offset="0.5" />
                                        <GradientStop Color="#FFFF0000" Offset="0.75" />
                                        <GradientStop Color="#00FF0000" Offset="1" />
                                    </RadialGradientBrush>
                                </Ellipse.Fill>
                            </Ellipse>
                            <Ellipse Height="10" Width="10" Canvas.Left="-5" Canvas.Top="-5" Fill="#FFFF0000" x:Name="ellipse1" />
                        </Canvas>
                    </ControlTemplate>
                </esri:MarkerSymbol.ControlTemplate>
            </esri:MarkerSymbol>
</Grid.Resources>


private void UserControl_Loaded(object sender,RoutedEventArgs e)
{

     QueryTask queryTask = new QueryTask("http://192.168.2.5/arcgis/rest/services/AnHuiDynamic/MapServer/0");
     queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
     queryTask.Failed += QueryTask_Failed;

     ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();
     query.ReturnGeometry = true;
     query.Text = conditions;
     query.OutSpatialReference = myMap.SpatialReference;
     query.OutFields.Add("NAME");
     queryTask.ExecuteAsync(query);      

}

 private void QueryTask_ExecuteCompleted(object sender,ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
{
     FeatureSet featureSet = args.FeatureSet;
       
    Graphicslayer graphicslayer = myMap.Layers["MyGraphicslayer"] as Graphicslayer;
    graphicslayer.Cleargraphics();

    if (featureSet != null && featureSet.Features.Count > 0)
    {
        Graphic selectedFeature = featureSet.Features[0];

       // Highlight selected feature
       selectedFeature.Symbol = LayoutRoot.Resources["DefaultMarkerSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
       graphicslayer.Graphics.Add(selectedFeature);

       // Zoom to selected feature (define expand percentage)
       ESRI.ArcGIS.Client.Geometry.Envelope selectedFeatureExtent = selectedFeature.Geometry.Extent;

       double expandPercentage = 30;

      double widthExpand = selectedFeatureExtent.Width * (expandPercentage / 100);
       double heightExpand = selectedFeatureExtent.Height * (expandPercentage / 100);

       ESRI.ArcGIS.Client.Geometry.Envelope displayExtent = new ESRI.ArcGIS.Client.Geometry.Envelope(
       selectedFeatureExtent.XMin - (widthExpand / 2),selectedFeatureExtent.YMin - (heightExpand / 2),selectedFeatureExtent.XMax + (widthExpand / 2),selectedFeatureExtent.YMax + (heightExpand / 2));

       myMap.ZoomTo(displayExtent);
     }
}

private void QueryTask_Failed(object sender,TaskFailedEventArgs args)
{
    MessageBox.Show("Query Failed: " + args.Error);
}


效果如下图:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐