zoukankan      html  css  js  c++  java
  • [玩转Silverlight]第五回:应用篇,在Silverlight中使用Virtual Earth地图服务

    《你必须知道的.NET》网站 | Anytao技术博客 

    [玩转Silverlight]第五回:应用篇,在Silverlight中使用Virutal Earth地图服务

    发布日期:2009.03.29 作者:Anytao
    © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处。

    畅游地球是个美好的愿望,随着地图服务的日益完善,我们足不出户畅游全球已变得简单异常。事实上,Google Earth和Virutal Earth已经成为Web服务中的必选目标,为自己的网站加入Earth或者Map地图服务是件非常酷的事情,那么在我们的Silverlight应用中使用地图服务是否能够得心应手呢?

    答案是肯定的,我们操作Earth服务只需执行简单的服务调用,就可完成坐地日行八万里的壮举了,而这一切是由VIEWs组件封装了Javascript脚本来完成的,通过对Virtual Earth Service的调用,在Silverlight中使用托管代码完成简单消费。

    下面我们来看看这一过程是如何实现的?

    必要的准备

    必要的准备其实很简单,主要包括:

    • VIEWS.dll,封装了对脚本的处理逻辑类VEMap。
    • ScriptInterop.dll,包含VEMap的基类JSObject。
    • views.js,调用Virtual Earth服务。

    对此,我们无需多做解释,在代码中自会由明白的演示。

    实现的过程

    • 创建Silverlight项目和Web项目(例如Anytao.SLight.MapAccess和Anytao.SLight.MapAccess.Web),在Silverlight项目中Add Reference VIEW和ScriptInterop程序集,在Web项目中引入views脚本。
    • 在Silverlight宿主页面引入views.js脚本和virtualearth服务脚本
    <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script>    
    <script type="text/javascript" src="views.js"></script>
    • 为Virtual Earth创建容器
    <div id="myMap" style="position:absolute; width:640px; height:480px; top:105px;"></div>
    • 在Silverlight中添加调用布局
    <Grid x:Name="LayoutRoot" Background="Azure">
        <StackPanel Orientation="Vertical" >
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top">
                <TextBox x:Name="tbPlace" Width="200" Height="30" Text="Beijing" Margin="5" />
                <Button x:Name="btnFind" Width="100" Content="Find" Height="30" Click="btnFind_Click" />
            </StackPanel> 
            <HyperlinkButton x:Name="codeload" HorizontalAlignment="Center" Content="Code Download" Margin="10" Click="codeload_Click" />
            <TextBlock HorizontalAlignment="Center" Text="2009, Anytao.com" />
        </StackPanel>
    </Grid>
    • 实现具体的调用逻辑
    // Release : code01, 2009/03/03                    
    // Author  : Anytao, http://www.anytao.com 
    // List    : Page.xaml.cs
    public partial class Page : UserControl
    {
        private VEMap map;
        private VEShapeLayer layer;
    
        public Page()
        {
            InitializeComponent();
    
            Loaded += new RoutedEventHandler(Page_Loaded);
            codeload.Content = "Download: " + App.Current.GetType().Namespace;
        }
    
        void Page_Loaded(object sender, RoutedEventArgs e)
        {
            //Create from container
            map = new VEMap("myMap");
            HtmlPage.RegisterScriptableObject("SLMAP", map);
    
            //Location in Beijing
            VELatLong point = new VELatLong(39.92, 116.46);
            //Loading the earth
            map.LoadMap(point, 11);
        }
    
        private void btnFind_Click(object sender, RoutedEventArgs e)
        {
            //Find a location
            map.Find(string.Empty, tbPlace.Text);
        }
    }
    • OK,大功告成,我们欣赏并搜索自己的地方了,默认情况下我们首先会看得伟大首都的缩影。

    当然,还有更多的控制,我们没有演示,大家可以了解了解VEMap提供的服务和接口,相信你能获取更多超酷的地图探索体验。

    示例演示

    参考文献

    温故知新

    anytao | © 2009 Anytao.com

    2009/03/29 | http://anytao.cnblogs.com/ | http://anytao.net/blog/post/2009/03/18/anytao_silverlight_05_usevirtualearth.aspx

    本文以“现状”提供且没有任何担保,同时也没有授予任何权利。 | This posting is provided &quotAS IS" with no warranties, and confers no rights.

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    支持anytao的创业产品Worktile
    Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
    https://worktile.com
  • 相关阅读:
    powershell初探(七)
    powershell初探(九)
    打造一个有感觉的Vim(一)
    屏幕录像软件Wink
    注释也精彩
    解决XP专业版局域网访问故障十八招
    可以抓文字的抓图软件
    轻松玩转XP系统(一)
    Excel实战技巧之[活用条件格式]
    局域网传输工具飞鸽传书IPMessager
  • 原文地址:https://www.cnblogs.com/anytao/p/anytao_silverlight_05_usevirtualearth.html
Copyright © 2011-2022 走看看