WP8.1开发教程二: MapControl视图控件和Animation动画实例应用

WP8.1开发教程2:MapControl应用

MapControl对应ArcMap中的数据视图,它封装了Map对象,并提供了额外的属性、方法、事件用于:

管理控件的外观、显示属性和地图属性;
添加并管理控件中的数据层;
装载Map文档(.mxd)到控件中
从其它应用程序拖放数据到控件中;
Tracking shapes and drawing to the display

ArcGIS的每种控件都有属性可以设置,它们可以在可视化环境中进行编辑。将控件拖放到窗体上后,用户可以右键点击,选择“属性”菜单来编辑这些属性,它们可以让用户不编写一行代码的情况下快速构建一个GIS应用程序。

总的界面布局如下:

其xaml代码如下:

 代码如下 复制代码
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="450"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Maps:MapControl Grid.Row="0" Name="myMap"/>
   
    <StackPanel Grid.Row="1">
        <TextBlock Name="sliderTextblock" HorizontalAlignment="Center" Style="{ThemeResource ControlHeaderTextBlockStyle}" />
        <Slider Name="mapSlider" ValueChanged="mapSlider_ValueChanged" Maximum="18" Minimum="0"/>
        <StackPanel Orientation="Horizontal">
            <Button Name="GetPositionButton" Content="Get" Click="GetPositionButton_Click"/>
            <Button Name="SetPositonButton" Content="Set" Click="SetPositonButton_Click"/>
        </StackPanel>
        <TextBlock Name="showMapTextblock" />
       
    </StackPanel>
</Grid>

对应的主要的C#代码如下:

 代码如下 复制代码
protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        var locator = new Geolocator();//开启位置
        locator.DesiredAccuracyInMeters = 50;//设置位置服务的准确度  50米

        var position = await locator.GetGeopositionAsync(); //得到当前的位置
        await myMap.TrySetViewAsync(position.Coordinate.Point,18D);// MapControl控件显示当前位置(point是纬度和经度;18D为当前精度
        mapSlider.Value = myMap.ZoomLevel;
       
    }

    private void GetPositionButton_Click(object sender, RoutedEventArgs e)
    {
        showMapTextblock.Text = string.Format("{0},{1}", myMap.Center.Position.Longitude, myMap.Center.Position.Latitude);
    }

    private async void SetPositonButton_Click(object sender, RoutedEventArgs e)
    {
        var setposition = new Windows.Devices.Geolocation.BasicGeoposition();
        setposition.Latitude=47;
        setposition.Longitude=-122;
        var mypoint=new Windows.Devices.Geolocation.Geopoint(setposition);
        if (await myMap.TrySetViewAsync(mypoint, 18D))
        {
            //
        }
    }
 

    private void mapSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
    {
        if (myMap!=null)
        {
            myMap.ZoomLevel = e.NewValue;
            double tt;
            tt = e.NewValue / 18 * 100;
            sliderTextblock.Text = string.Format("{0}%", (int)tt);
        }
    }
}

同时还需注意在Package文件中把位置功能打开,相应步骤如下:

 

WP8.1 Study3:WP8.1中Animation应用

WP8.1上的Animation动画的API和WIN8/WIN8.1上的差不多,网上可以找到很多资料,同时可以去MSDN看官方文档。

下面是我参考一些资料,写出来的例子,希望以后有用。

xaml代码如下:

 代码如下 复制代码
<Grid>
    <StackPanel>
        <StackPanel.Resources>
            <!--DoubleAnimation-->
            <Storyboard x:Name="showAnimation">
                <DoubleAnimation Storyboard.TargetName="animatedImage"
                                 Storyboard.TargetProperty="Opacity"
                                 From="0"
                                 To="1"
                                 Duration="0:0:2"/>
            </Storyboard>
            <Storyboard x:Name="HideAnimation">
                <DoubleAnimation Storyboard.TargetName="animatedImage"
                                 Storyboard.TargetProperty="Opacity"
                                 From="1"
                                 To="0"
                                 Duration="0:0:2"/>
            </Storyboard>
            <!--FadeTheAnimation-->
            <Storyboard x:Name="fadeinAnimation">
                <FadeInThemeAnimation Storyboard.TargetName="animatedrectangle"
                                      FillBehavior="HoldEnd"
                                      SpeedRatio="8"
                                      Duration="0:0:4"/>
            </Storyboard>
            <Storyboard x:Name="fadeoutAnimation">
                <FadeOutThemeAnimation Storyboard.TargetName="animatedrectangle"
                                       SpeedRatio="0.1"
                                       Duration="0:0:4"/>
            </Storyboard>
            <!--ColorAnimation-->
            <Storyboard x:Name="coloranimation">
                <ColorAnimation Storyboard.TargetName="animatedEllipse"
                                Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)"
                                From="Red"
                                To="Blue"
                                Duration="0:0:2"/>
            </Storyboard>
            <!--
                PointerDownThemeAnimation - 鼠标(手指)在控件上按下时的动画
            -->
            <Storyboard x:Name="storyboardPointerDown">
                <PointerDownThemeAnimation Storyboard.TargetName="border" />
            </Storyboard>

            <!--
                PointerUpThemeAnimation - 鼠标(手指)在控件上抬起时的动画
            -->
            <Storyboard x:Name="storyboardPointerUp">
                <PointerUpThemeAnimation Storyboard.TargetName="border" />
            </Storyboard>
   
        </StackPanel.Resources>
       
        <!--控件-->
        <Button Name="show" Content="show" Width="80" Height="50" Click="show_Click"/>
        <Button Name="hide" Content="hide" Width="80" Height="50" Click="hide_Click"/>
        <Image Name="animatedImage"
               Source="blue.png"
               Opacity="0"
               Width="100"
               Height="100"
               ImageOpened="animatedImage_ImageOpened"/>
        <Rectangle Name="animatedrectangle"  Fill="RosyBrown" Width="100" Height="100"/>
            <Ellipse Name="animatedEllipse"  Fill="Red" Width="100" Height="100"/>
        <Border Name="border" BorderThickness="5" BorderBrush="Red" Background="Blue" CornerRadius="10" Width="400" Height="100" HorizontalAlignment="Left">
            <Border.Child>
                <TextBlock Text="我是 Border 里的内容" FontSize="24.667" TextAlignment="Center" VerticalAlignment="Center" />
            </Border.Child>
        </Border>
    </StackPanel>

</Grid>

当前页面的主要C#代码如下:

 代码如下 复制代码
private void show_Click(object sender, RoutedEventArgs e)
    {
        showAnimation.Begin();
        fadeinAnimation.Begin();
        coloranimation.Begin();
        storyboardPointerUp.Begin();
    }

    private void hide_Click(object sender, RoutedEventArgs e)
    {
        HideAnimation.Begin();

        fadeoutAnimation.Begin();
        storyboardPointerDown.Begin();
    }

    private void animatedImage_ImageOpened(object sender, RoutedEventArgs e)
    {

    }

 

时间: 2024-11-26 07:54:09

WP8.1开发教程二: MapControl视图控件和Animation动画实例应用的相关文章

多层数据库开发十二:使用数据控件

                                       第十二章 使用数据控件 在数据库应用程序中,数据控件是经常要用到的.与前面介绍的数据集构件如TTable.TQuery.TStoredProc.TClientDataSet不同的是,数据控件都是可视的.也就是说,如果修改了这些构件的属性,能在窗体上马上反映出来.如果这些构件的Enabled属性设为True并且数据集的Active属性也设为True,在设计期就可以看到数据.12.1 Delphi 4中有哪些数据控件 在D

iOS应用开发中视图控件UIWindow的基本使用教程_IOS

一.简单介绍 iPhone应用程序通常只有一个窗口,表示为一个UIWindow类的实例.应用程序在启动时(或者从nib文件进行装载)创建这个窗口,并往窗口中加入一或多个视图并显示出来.之后我们很少需要再次引用它.UIWindow对象是所有UIView的根,管理和协调的应用程序的显示.一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件. 在IOS中,UIWindow对象并没有像windows应用程序中常见的关闭框或标题栏这样

Android开发入门(十二)列表控件 12.2 ListView的扩展功能

ListView是一个可以被深度扩展的视图.在做项目的时候,扩展ListView去显示数据是必不可免的.接下 来会展示如何在ListView中去选择多个物件,以及如何使用ListView的"过滤"功能. 1. 使用上一 节的工程:BasicViews5. 2. 在BasicViews5Activity.java中添加一些代码. String[] presidents; /** Called when the activity is first created. */ @Override

.Net WInform开发笔记(三)谈谈自制控件(自定义控件)_C#教程

末日这天写篇博客吧,既然没来,那就纪念一下. 这次谈谈自制控件,也就是自定义控件,先上图,再说 1.扩展OpenFileDialog,在OpenFileDialog中添加各种文件(.txt,.jpg,.excel等等)的预览功能 开发笔记(三)谈谈自制控件(自定义控件)_C#教程-winform自定义控件"> 2.重写ListBox,增加折叠.鼠标背影.分类等功能 -----------------------------分割线-------------------------------

Android简明开发教程二十二:使用资源Resources

在前面的例子中,我们忽略了一个重要的原则,在代码和Layout中,直接使用了字符串常量,比如: <Button android:text="Pattern" android:id="@+id/btnPattern" android:layout_width="wrap_content" android:textColor="@color/black" android:checked="true" an

Android开发入门(十二)列表控件 12.3 ListView的总结范例

使用一个例子,来总结一下ListView的基本使用. 1. 新建一个工程:ListViewDemo. 2. main.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pare

Android开发入门(十二)列表控件 12.1 ListView的基本使用

今天总结一下Android中的列表控件:ListView和Spinner. ListView可以垂直并可滑动地地显示 一些信息.下面阐述如何使用ListView显示一系列的信息. 1. 创建一个工程:BasicViews5. 2. strings.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">He

微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台

原文:微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台  微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 上节我们简单介绍了一下什么是公众号第三方平台,今天我们将具体操作如何创建属于您自己的微信第三方平台. 注册认证 用户首选需要注册成为开发平台的用

arcgis 二次开发-VS2012工具箱Arcgis Engine 控件图标不能正常显示?

问题描述 VS2012工具箱Arcgis Engine 控件图标不能正常显示? 开发-VS2012工具箱Arcgis Engine 控件图标不能正常显示?-arcgisengine二次开发"> 解决方案 首先检查下控件安装是否正确 再不行删除C:/Documents and Settings/你的用户名/Local Settings/Application Data/Microsoft/VisualStudio 重新启动 解决方案二: http://my.oschina.net/u/592