找回密码
 立即注册
首页 业界区 业界 在Silverlight中使用Virtual Earth地图服务

在Silverlight中使用Virtual Earth地图服务

碣滥 2025-5-30 01:12:54
《你必须知道的.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服务脚本
  1.    
复制代码

  • 为Virtual Earth创建容器
  1. [/code]
  2. [list]
  3. [*]在Silverlight中添加调用布局
  4. [/list][code]<Grid x:Name="LayoutRoot" Background="Azure">
  5.     <StackPanel Orientation="Vertical" >
  6.         <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top">
  7.             <TextBox x:Name="tbPlace" Width="200" Height="30" Text="Beijing" Margin="5" />
  8.             <Button x:Name="btnFind" Width="100" Content="Find" Height="30" Click="btnFind_Click" />
  9.         </StackPanel>
  10.         <HyperlinkButton x:Name="codeload" HorizontalAlignment="Center" Content="Code Download" Margin="10" Click="codeload_Click" />
  11.         <TextBlock HorizontalAlignment="Center" Text="2009, Anytao.com" />
  12.     </StackPanel>
  13. </Grid>
复制代码

  • 实现具体的调用逻辑
  1. // Release : code01, 2009/03/03                    
  2. // Author  : Anytao, http://www.anytao.com
  3. // List    : Page.xaml.cs
  4. public partial class Page : UserControl
  5. {
  6.     private VEMap map;
  7.     private VEShapeLayer layer;
  8.     public Page()
  9.     {
  10.         InitializeComponent();
  11.         Loaded += new RoutedEventHandler(Page_Loaded);
  12.         codeload.Content = "Download: " + App.Current.GetType().Namespace;
  13.     }
  14.     void Page_Loaded(object sender, RoutedEventArgs e)
  15.     {
  16.         //Create from container
  17.         map = new VEMap("myMap");
  18.         HtmlPage.RegisterScriptableObject("SLMAP", map);
  19.         //Location in Beijing
  20.         VELatLong point = new VELatLong(39.92, 116.46);
  21.         //Loading the earth
  22.         map.LoadMap(point, 11);
  23.     }
  24.     private void btnFind_Click(object sender, RoutedEventArgs e)
  25.     {
  26.         //Find a location
  27.         map.Find(string.Empty, tbPlace.Text);
  28.     }
  29. }
复制代码

  • OK,大功告成,我们欣赏并搜索自己的地方了,默认情况下我们首先会看得伟大首都的缩影。
当然,还有更多的控制,我们没有演示,大家可以了解了解VEMap提供的服务和接口,相信你能获取更多超酷的地图探索体验。
示例演示

 
参考文献

  • http://www.codeplex.com/views
温故知新

  • 第一回:基础篇,品尝与HttpHandler通信
  • 第二回:应用篇,Silverlight本地化
  • 第三回:基础篇,在Silverlight中使用基于WCF的REST服务(上)
  • 第四回:基础篇,在Silverlight中使用基于WCF的REST服务(下)

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册