《你必须知道的.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服务脚本
- [/code]
- [list]
- [*]在Silverlight中添加调用布局
- [/list][code]<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提供的服务和接口,相信你能获取更多超酷的地图探索体验。
示例演示
参考文献
- http://www.codeplex.com/views
温故知新
- 第一回:基础篇,品尝与HttpHandler通信
- 第二回:应用篇,Silverlight本地化
- 第三回:基础篇,在Silverlight中使用基于WCF的REST服务(上)
- 第四回:基础篇,在Silverlight中使用基于WCF的REST服务(下)
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |