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