知识大全 初探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#网络编程初探 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!我们知道C#和C++的差异之一就是他
ASP.NETViewState初探 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 和刚接触页面
ASP.NETViewState初探 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!请看下面的示例要
PHP5.3闭包语法初探 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PHP将加入闭包语法也就
荣县观山镇耕地面积21400亩,其中稻田面积7100亩,是幸福堰水库自流灌区,适合于稻田养鱼的发展面积有1536亩。形成了一套比较成熟的稻田养鱼综合技术,现将这一技术措施总结以后:一、稻田养鱼的条件:
荣县观山镇耕地面积21400亩,其中稻田面积7100亩,是幸福堰水库自流灌区,适合于稻田养鱼的发展面积有1536亩。形成了一套比较成熟的稻田养鱼综合技术,现将这一技术措施总结以后:一、稻田养鱼的条件:
ASP.NETViewState初探(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
初探Java7异常处理功能增强 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天我们来看看Ja
初探化学法处理电镀废水的理论基础王克和1,魏雪青2,王海燕3(1.大连市表面工程协会,辽宁大连116013;2.梅河口市产品质量检验所,吉林梅河口135000;3.中国环境科学研究院,北京100012
初探化学法处理电镀废水的理论基础王克和1,魏雪青2,王海燕3(1.大连市表面工程协会,辽宁大连116013;2.梅河口市产品质量检验所,吉林梅河口135000;3.中国环境科学研究院,北京100012