知识大全 初探DeepEarth控件

Posted

篇首语:知识贵在质,不在量。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 初探DeepEarth控件相关的知识,希望对你有一定的参考价值。

初探DeepEarth控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  DeepEarth是一个地图控件 它将微软的Virtual Earth与Silverlight 联合起来 该开源项目由其创建者(一群 NET的狂热爱好者)在CodePlex上发布 这句话已经在一年前就已经在网上随处可见了 去年 月InfoQ的张龙老师就翻译了一篇关于DeepEarth的文章资料《DeepEarth 使用Silverlight的地图控件》 当时我也又关注不过一直都没有花时间去研究它 最近写Bing Maps开发文章很多朋友都问我有研究过DeepEarth的话题 为了帮助这些朋友解决一些困扰特把DeepEarth简单学习了下特此分享给大家 关于DeepEarth的最新信息可访问 进行了解

  DeepEarth的最新版本是 功能上可以说是很强大和完善了 提供了对多种地图数据服务的支持 包括Google Maps YaHoo Bing Maps MapInfo以及amazonaws等等 本文通过DeepEarth加载amazonaws的卫星地图的示例程序初步探索下DeepEarth的基本使用方法

  首先建立Silverlight项目以及Siverlight宿主Web应用程序 附加DeepEarth源代码项目到解决方案中 并添加项目引用到新建的Siverlight应用 项目解决方案如下

  

  到这里一个基本的入门工作已经准备好了 接下来就是如何使用DeepEarth 首先得在新建的Silverlight的MainPage xaml里声明DeepEarth的引用如下

   xmlns:DeepEarth= clr namespace:DeepEarth;assembly=DeepEarth

   xmlns:DeepBlueMarble= clr namespace:DeepEarth Provider BlueMarble;assembly=DeepEarth Provider

   xmlns:DeepControls= clr namespace:DeepEarth Controls;assembly=DeepEarth

  有了引用的声明下面就可以使用DeepEarth控件以及其他的一些辅助控件(功能导航控件) 具体使用如下代码块

   <Grid x:Name= LayoutRoot Width= Height= >

        <DeepEarth:Map x:Name= map >

            <DeepControls:NavControl Canvas ZIndex= >

            </DeepControls:NavControl>

            <DeepControls:CoordControl />

        </DeepEarth:Map>

   </Grid>

  前端开发就这样了 现在转到后台代码视图并编写如下代码

   public partial class MainPage : UserControl

  

        public MainPage()

       

            InitializeComponent();

            if (HtmlPage IsEnabled)

           

                map BaseLayer Source = new BmTileSource(BmMapModes BlueMarbleWeb);

                map Events MapLoaded += PageLoad;

           

       

  

        protected void PageLoad(Map m MapEventArgs args)

       

            //定位地图的经度和纬度坐标

            double longitude = double Parse( );

            double latitude = double Parse( );

            m SetViewCenter(new Point(longitude latitude) );

       

  

  或许有人会说 代码我都能看懂 这到底代表什么意思呢?其实很简单这段后台代码就是给前端的DeepEarth控件初始化了一个地图图层 并为地图控件的加载事件委托了处理函数 当地图控件运行初始化时将地图定位到指定的经度和纬度 以及地图所显示的放大级别

  主要的实现还是在BmTileSource这个地图图层源里 也可以叫他地图图片系统源或地图图片映射系统源吧 关于TileSource可查看我的另一篇文章 【Silverlight】Bing Maps学习系列(七) 使用Bing Maps的图片系统(Tile System)

  现在我们将目光转移到BmTileSource类里去 位于DeepEarth Provider BlueMarble目录下 你将会看到这样一句代码

  private const string TilePathBlueMarbleWeb = @ ;

  这就是amazonaws卫星地图数据的Tile System(图片系统)的映射Url 通过这个Url我们就可以使用DeepEarth控件去加载amazonaws的卫星地图 这里需要注意的就是BmTileSource类里的GetTile方法 它就是用于计算地图图片系统的图片映射Url的

   public override Uri GetTile(int tileLevel int tilePositionX int tilePositionY)

  

        if (IsInitialized)

       

            int zoom = TileToZoom(tileLevel);

            _IsTileDownloadStarted = true;

  

            string url = string Empty;

  

            switch (MapMode)

           

                case BmMapModes BlueMarbleWeb:

                    url = TilePathBlueMarbleWeb;

                    url = string Format(url zoom tilePositionX tilePositionY);

                    break;

  

                case BmMapModes BlueMarbleLocal:

                    url = TilePathBlueMarbleLocal;

                    int port = Application Current Host Source Port;

                    url = string Format(url zoom tilePositionX tilePositionY port);

                    break;

           

            return new Uri(url);

       

        return null;

  

  根据不同的参数 组合为一个又一个完整的地图底片映射地址 然后组合在一起就显示出了完整的地图 编译运行这个示例我们可看到如下效果

  

cha138/Article/program/net/201311/12533

相关参考

知识大全 C#网络编程初探

C#网络编程初探  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!我们知道C#和C++的差异之一就是他

知识大全 ASP.NET ViewState初探

ASP.NETViewState初探  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  和刚接触页面

知识大全 ASP.NET ViewState 初探

ASP.NETViewState初探  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!请看下面的示例要

知识大全 PHP 5.3闭包语法初探

PHP5.3闭包语法初探  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PHP将加入闭包语法也就

稻田养鱼技术初探

荣县观山镇耕地面积21400亩,其中稻田面积7100亩,是幸福堰水库自流灌区,适合于稻田养鱼的发展面积有1536亩。形成了一套比较成熟的稻田养鱼综合技术,现将这一技术措施总结以后:一、稻田养鱼的条件:

稻田养鱼技术初探

荣县观山镇耕地面积21400亩,其中稻田面积7100亩,是幸福堰水库自流灌区,适合于稻田养鱼的发展面积有1536亩。形成了一套比较成熟的稻田养鱼综合技术,现将这一技术措施总结以后:一、稻田养鱼的条件:

知识大全 ASP.NET ViewState 初探 (1)

ASP.NETViewState初探(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 初探Java 7异常处理功能增强

初探Java7异常处理功能增强  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天我们来看看Ja

初探化学法处理电镀废水的理论基础

初探化学法处理电镀废水的理论基础王克和1,魏雪青2,王海燕3(1.大连市表面工程协会,辽宁大连116013;2.梅河口市产品质量检验所,吉林梅河口135000;3.中国环境科学研究院,北京100012

初探化学法处理电镀废水的理论基础

初探化学法处理电镀废水的理论基础王克和1,魏雪青2,王海燕3(1.大连市表面工程协会,辽宁大连116013;2.梅河口市产品质量检验所,吉林梅河口135000;3.中国环境科学研究院,北京100012