当前位置: 首页 > news >正文

应用篇,在Silverlight中使用Virtual Earth地图服务

ilverlight应用中使用地图服务是否能够得心应手呢?

答案是肯定的,我们操作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提供的服务和接口,相信你能获取更多超酷的地图探索体验。

示例演示

http://www.jsqmd.com/news/566114/

相关文章:

  • 2025年最新AI编程工具实战评测:GitHub Copilot vs 通义灵码 vs Cursor,谁更适合你的开发场景?
  • 15分钟完成黑苹果配置:OpCore-Simplify让新手告别3天调试噩梦
  • 智能招聘时间助手:Boss Show Time插件全方位解析
  • Axure数据可视化大屏设计实战:200+行业模板与动态组件解析
  • Python MCP安全模板的“最后一道防线”:eBPF驱动的运行时行为监控 + 异常调用实时熔断(附Kubernetes Admission Controller集成脚本)
  • 92. Kubewarden 证书轮换在 ArgoCD 上的问题
  • Ostrakon-VL像素终端实战:为盲人顾客生成语音版货架导航
  • 洛雪音乐音源项目:如何免费获取全网高品质音乐资源的完整指南
  • 2026年半导体清洗设备厂家推荐:厦门和伟达超声波设备有限公司,定制化清洗槽解决方案 - 品牌推荐官
  • nuScenes数据集避坑指南:从数据下载到多模态可视化完整流程
  • Zemax非序列模式入门:从光源到探测器的完整实战指南(附常见问题解答)
  • Kafka 成功消费消息的完整流程图
  • 2026进口显微维氏硬度计权威推荐榜:性能卓越品牌盘点与用户真实反馈 - 品牌推荐大师
  • 上海高端腕表抛光价格全解析:2026年六城2.8万例数据揭示的工艺真相与品牌修复成本 - 时光修表匠
  • Granite TimeSeries FlowState R1高可用部署架构:基于Kubernetes的容器化方案
  • cv_resnet101_face-detection_cvpr22papermogface实战效果:会议照片自动去重+人脸聚类预处理演示
  • Pixel Mind Decoder 创意应用:驱动STM32嵌入式设备的情绪交互灯光
  • GTX1650也能跑!Windows11上OLLAMA+AnythingLLM本地部署Llama3保姆级教程
  • 2026年成都中职升本科机构推荐:成都微畔教育,对口单招/高职单招/职教高考全覆盖 - 品牌推荐官
  • AI-AGENT概念解析 - LLM模型和AI领域助手
  • 前后端时间数据类型不一致如何解决
  • 2026年西门子数控系统维修服务推荐:长沙市晨骏自动化专业解决驱动器/主板/按键失灵等故障 - 品牌推荐官
  • 终极窗口自由:SRWE让你的应用程序突破分辨率限制的完整指南
  • Mac Mouse Fix:让你的10美元鼠标比苹果触控板更好用的终极指南
  • 如何为黑群晖DSM7.0.1添加2.5G网卡和NVME固态硬盘:详细配置教程
  • Oracle 迁移到 PostgreSQL:低业务中断、可校验、可回退
  • 别再为UI动画发愁了!用Spine+Unity 2021制作丝滑2D动画的保姆级流程
  • CBconvert:漫画格式全平台转换高效解决方案
  • 三三复制商业模式系统介绍
  • 2026年倒角机厂家推荐:长恩精机有限公司,小型/新型/自动/工业倒角机全系供应 - 品牌推荐官