色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

在Silverlight 2應(yīng)用程序中集成Virtual Earth

概述

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

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

在HTML中集成

在開(kāi)始之前,我們先來(lái)簡(jiǎn)單看一下如何在HTML中集成Virtual Earth,大家可以去這里查詢相關(guān)APIs,我們來(lái)看看如何加載默認(rèn)地圖,如下代碼所示:

<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>

其實(shí)這段代碼非常簡(jiǎn)單的簡(jiǎn)單,首先引入Virtual Earth Map控件,并且使用JavaScript來(lái)加載地圖。

TerryLee_0094

 

 

這是最簡(jiǎn)單的一個(gè)示例,但是并沒(méi)有多大實(shí)用價(jià)值,下面我們?cè)倏匆粋€(gè)如何在查找地圖上的特定位置的示例,如下代碼所示:

<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>

其實(shí)查找位置也特別簡(jiǎn)單,直接調(diào)用VEMap對(duì)象的Find()方法即可,運(yùn)行后,查找“Beijing”如下圖所示:

TerryLee_0095

在Silverlight中集成

通過(guò)上面的兩個(gè)示例,大家看到了,在HTML中加載Virtual Earth都是使用JavaScript來(lái)完成,我們知道Silverlight 2應(yīng)用程序可以很容易的實(shí)現(xiàn)與JavaScript的交互,意味著我們可以在Silverlight 2應(yīng)用程序中通過(guò)調(diào)用JavaScript代碼來(lái)實(shí)現(xiàn)集成,這種方式的確是可以的,但如果要編寫(xiě)非常復(fù)雜的Virtual Earth應(yīng)用,實(shí)現(xiàn)起來(lái)也是一件不容易的事。

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

在下載Virtual Earth Wrapper for Silverlight后解壓縮,會(huì)看到有兩個(gè)程序集和一個(gè)JavaScript文件。首先在HTML中引入相關(guān)的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在壓縮包里面有,然后添加一個(gè)div,用來(lái)作為地圖容器:

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

編寫(xiě)一段腳本,定義一個(gè)silverlight變量,該變量在此處雖然沒(méi)有做任何事,但它將會(huì)在views.js文件中被運(yùn)用:

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

編寫(xiě)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>

 

 

現(xiàn)在來(lái)看Silverlight中的代碼編寫(xiě),首先引入ScriptInterop.dll和VIEWS.dll兩個(gè)程序集,并引入相關(guān)的命名空間。在Page_Loaded事件中加入:

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

代碼非常簡(jiǎn)單,創(chuàng)建一個(gè)VEMap對(duì)象,這里的mapContainer就是我們剛才定義的地圖容器,而SLMAP則是注冊(cè)的對(duì)象別名,注意這個(gè)名稱不能修改,因?yàn)樵趘iews.js中將會(huì)用到。現(xiàn)在運(yùn)行后可以看到加載的地圖:

TerryLee_0096

現(xiàn)在我們?cè)倏匆幌氯绾卧赟ilverlight中加入查找位置的功能,代碼非常簡(jiǎn)單:

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

除此之外,我們還可以開(kāi)發(fā)更加復(fù)雜的應(yīng)用,如添加層、實(shí)現(xiàn)3D效果等,下面是作者給出的一個(gè)示例效果:

TerryLee_0098 

可以到這里下載該示例。

總結(jié)

本文簡(jiǎn)單介紹了如何使用VIEWS項(xiàng)目實(shí)現(xiàn)Silverlight 2與Virtual Earth的集成,希望對(duì)大家有所幫助。

NET技術(shù)在Silverlight 2應(yīng)用程序中集成Virtual Earth,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 读书| 崇明县| 陆河县| 平乡县| 碌曲县| 永修县| 岳阳县| 栾川县| 广西| 高邑县| 宝鸡市| 金川县| 喀喇沁旗| 龙川县| 比如县| 吴旗县| 济阳县| 澄江县| 千阳县| 娱乐| 育儿| 湾仔区| 东城区| 马龙县| 江川县| 柳江县| 长葛市| 扬州市| 页游| 夹江县| 灵石县| 天峨县| 图们市| 海晏县| 樟树市| 石渠县| 巴青县| 宁远县| 读书| 左贡县| 旺苍县|