天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

在Silverlight 2應用程序中集成Virtual Earth

概述

Virtual Earth是什么,我想不用多做解釋了。微軟在推出自己的Virtual Earth之后,開放了大量的APIs,使得我們可以方便集成到自己的應用程序中。

本文將介紹如何在自己的Silverlight 2應用程序中集成Virtual Earth。

在HTML中集成

在開始之前,我們先來簡單看一下如何在HTML中集成Virtual Earth,大家可以去這里查詢相關APIs,我們來看看如何加載默認地圖,如下代碼所示:

<html>   <head>      <title></title>      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">      <script type="text/Javascript"             src="http://dev.virtualearth.NET/mapcontrol/mapcontrol.ashx?v=6.1"></script>      <script type="text/Javascript">          var map = null;          function GetMap()          {             map = new VEMap('myMap');             map.LoadMap();          }         </script>   </head>   <body onload="GetMap();">      <div id='myMap' style="position:relative; width:480px; height:320px;"></div>   </body></html>

其實這段代碼非常簡單的簡單,首先引入Virtual Earth Map控件,并且使用JavaScript來加載地圖。

TerryLee_0094

 

 

這是最簡單的一個示例,但是并沒有多大實用價值,下面我們再看一個如何在查找地圖上的特定位置的示例,如下代碼所示:

<html>   <head>      <title></title>      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">      <script type="text/Javascript"         src="http://dev.virtualearth.NET/mapcontrol/mapcontrol.ashx?v=6.1"></script>      <script type="text/Javascript">      var map = null;      function GetMap()      {         map = new VEMap('myMap');         map.LoadMap();      }         function FindLoc()      {         try         {            var where = document.getElementById('txtWhere').value;            map.Find(null, where);         }         catch(e)         {            alert(e.message);         }      }      </script>   </head>   <body onload="GetMap();">      <div id='myMap' style="position:relative; width:500px; height:300px;"></div>      <input id="txtWhere" type="text" name="txtWhere"/>      <input id="find" type="button" value="Find" name="find" onclick="FindLoc();"/>   </body></html>

其實查找位置也特別簡單,直接調用VEMap對象的Find()方法即可,運行后,查找“Beijing”如下圖所示:

TerryLee_0095

在Silverlight中集成

通過上面的兩個示例,大家看到了,在HTML中加載Virtual Earth都是使用JavaScript來完成,我們知道Silverlight 2應用程序可以很容易的實現與JavaScript的交互,意味著我們可以在Silverlight 2應用程序中通過調用JavaScript代碼來實現集成,這種方式的確是可以的,但如果要編寫非常復雜的Virtual Earth應用,實現起來也是一件不容易的事。

好在有一個開源項目可以幫助我們,使用托管代碼在Silverlight 2中實現Virtual Earth應用。該項目名稱為“Virtual Earth Wrapper for Silverlight”,官方地址:http://www.codeplex.com/views,當前版本是1.1。該項目使用托管代碼來封裝了所有Virtual Earth中的JavaScript應用,使得我們編寫Virtual Earth與Silverlight 2集成應用程序變得非常簡單。下面我們看一個簡單的示例,如何在Silverlight中加載Virtual Earth。

在下載Virtual Earth Wrapper for Silverlight后解壓縮,會看到有兩個程序集和一個JavaScript文件。首先在HTML中引入相關的JS腳本,如下代碼所示:

<head>    <script type="text/Javascript"         src="http://dev.virtualearth.NET/mapcontrol/mapcontrol.ashx?v=6.1"></script>    <script type="text/Javascript" src="views.js"></script></head>

其中views.js在壓縮包里面有,然后添加一個div,用來作為地圖容器:

<div id='mapContainer' style="position:relative; width:500px; height:300px;"></div>

編寫一段腳本,定義一個silverlight變量,該變量在此處雖然沒有做任何事,但它將會在views.js文件中被運用:

<script type="text/Javascript">    var silverlight = null;    function pluginLoaded(sender,args)    {        silverlight = document.getElementById('Silverlight');    }</script>

編寫Silverlight Object,指定onLoad事件,如下代碼所示:

<div id="silverlightControlHost" style="position:absolute; width:300px; height:480px;                 left:10px; top:320px; z-index:2"><object data="data:application/x-silverlight," type="application/x-silverlight-2-b2"         style="width:500px;height:50px;border-width:0;" id="Silverlight">    <param name="onLoad" value="pluginLoaded" />    <param name="source" value="ClientBin/SilverlightIntegrateVirtualEarth.xap"/>    <param name="background" value="white" /></object></div>

 

 

現在來看Silverlight中的代碼編寫,首先引入ScriptInterop.dll和VIEWS.dll兩個程序集,并引入相關的命名空間。在Page_Loaded事件中加入:

void Page_Loaded(object sender, RoutedEventArgs e){    VEMap map = new VEMap("mapContainer");    HtmlPage.RegisterScriptableObject("SLMAP", map);    map.LoadMap();}

代碼非常簡單,創建一個VEMap對象,這里的mapContainer就是我們剛才定義的地圖容器,而SLMAP則是注冊的對象別名,注意這個名稱不能修改,因為在views.js中將會用到。現在運行后可以看到加載的地圖:

TerryLee_0096

現在我們再看一下如何在Silverlight中加入查找位置的功能,代碼非常簡單:

VEMap map;void Page_Loaded(object sender, RoutedEventArgs e){    map = new VEMap("mapContainer");    HtmlPage.RegisterScriptableObject("SLMAP", map);    map.LoadMap();}void btnFind_Click(object sender, RoutedEventArgs e){    map.Find(null, this.txtWhere.Text);    map.LoadMap();}

效果如下圖所示:

TerryLee_0097

除此之外,我們還可以開發更加復雜的應用,如添加層、實現3D效果等,下面是作者給出的一個示例效果:

TerryLee_0098 

可以到這里下載該示例。

總結

本文簡單介紹了如何使用VIEWS項目實現Silverlight 2與Virtual Earth的集成,希望對大家有所幫助。

NET技術在Silverlight 2應用程序中集成Virtual Earth,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产 亚洲 中文在线 字幕 | 国产国拍精品AV在线观看 | 亚洲一卡二卡三卡四卡无卡麻豆 | 在线免费中文字幕 | 久久中文字幕亚洲 | 久久www成人看片 | 色偷偷爱偷偷要 | 国产精品免费一区二区区 | 中文字幕在线视频免费观看 | 午夜伦理网 | 凌馨baby | 色偷偷7777www| H揉捏娇喘乳叫床NP调教视频 | 差差差差差差差差免费观看 | 国产嫩草影院精品免费网址 | caoporn 超碰在线视频 | 久久久久综合网 | 97精品国产亚洲AV高清 | 久久综合色视频 | 日本邪恶全彩工囗囗番海贼王 | 色拍拍噜噜噜久久蜜桃 | 99在线精品国自产拍 | 亚洲高清中文字幕 | 欧美精品一区二区在线电影 | 欧美黑人巨大videos免费 | 亚洲av欧美在我 | 久久久综合中文字幕久久 | 在线视频 国产精品 中文字幕 | 男人一进一出桶女人视频 | babesvideos欧美最新 | 日韩高清特级特黄毛片 | 99久久国产露脸精品竹菊传煤 | 欧美阿v天堂视频在99线 | 99精品国产AV一区二区麻豆 | 忘忧草在线影院WWW日本动漫 | 99精品国产自在自线 | 儿媳妇完整版视频播放免费观看 | 伊人久久大香线蕉观看 | 国产探花在线精品一区二区 | 国产成人免费网站在线观看 | 亚洲欧美在无码片一区二区 |