【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)

  目前包括微软必应地图在内的几乎所有在线电子地图(如:Google Maps等)都事先对地图图片(Tile)进行预处理,通过特定的算法将预处理过后的图片进行无缝的拼接,建立一套统一有规律、标准的地图映射系统。Bing Maps地图映射、坐标系以及地图Tile编码体系映射,统称为必应地图图片系统(Bing Maps Tile System)。

  如果要了解Bing Maps的地图图片系统,可以看看下面这两片文章: 

必应地图图片系统(Tile System)之一

必应地图图片系统(Tile System)之二

  了解了Bing Maps的Tile System,下面来看看如何使用Bing Maps的Tile System。首先要明确一点,地图的不同放大级别(ZoomLabel)的界面上显示的效果是又不同的多张图片组成,下面通过Tile System加载一张图片(http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/China0.jpg)的示例来来证实这一说话。

1 publicMainPage()
2 {
3 InitializeComponent();
4 MapTileLayer tileLayer =newMapTileLayer();
5 LocationRectTileSource tileSource =newLocationRectTileSource(
6 newUriBuilder(@"http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/China0.jpg").Uri.ToString(),
7 newLocationRect(newLocation(60, 60), newLocation(13, 140)),
8 newRange<double>(1, 16));
9 tileLayer.TileSources.Add(tileSource);
10 tileLayer.Opacity =0.9;
11 myMap.Children.Add(tileLayer);
12 this.myMap.ViewChangeOnFrame +=delegate(objectsender, Microsoft.Maps.MapControl.MapEventArgs e)
13 {
14 doublelongitude =this.myMap.Center.Longitude;
15 doublelatitude =this.myMap.Center.Latitude;
16 
17 this.tbLatitude.Text =latitude.ToString();
18 this.tbLongitude.Text =longitude.ToString();
19 };
20 this.myMap.Mode =newMercatorMode();
21 }

  通过上面4---11行代码,实现通过Tile System加载一张图片到地图显示出来,通过运行程序可以发现,同一张图片在设置的地图界面上显示出了多张,这是为什么呢?就是上面所声明是:“地图的不同放大级别(ZoomLabel)的界面上显示的效果是又不同的多张图片组成”,为了证实这一点我们可以通过HttpWatch等工具查看到详细的http请求响应数据:

      

      

  在本文开头部分提到,Bing Maps地图数据就是通过Tile System编码映射将不同的图片组合在一起形成的一套完整的图片系统。下面我们将上面加载图片的地址修改下,比如加载中国地区的Bing Maps,首先我们需要找到中国地图所对应的Bing Maps的Tile System映射Url(可通过HttpWatch工具在http://cn.bing.com/得到)。

      

1 namespaceUseTileLayers
2 {
3 publicpartialclassMainPage : UserControl
4 {
5 publicMainPage()
6 {
7 InitializeComponent();
8 //初始化一个Uri对象,指向中文必应地图的Tile系统
9 UriBuilder tileSourceUri =newUriBuilder("http://r2.tiles.ditu.live.com/tiles/r{quadkey}.png?g=41");
10 
11 MapTileLayer tileLayer =newMapTileLayer(); //初始化一个图层
12 LocationRectTileSource tileSource =newLocationRectTileSource(
13 tileSourceUri.Uri.ToString(),
14 newLocationRect(newLocation(60, 60), newLocation(13, 140)),
15 //初始化LocationRectTileSource对象,设定显示范围及放大级别
16 newRange<double>(1, 16));
17 tileLayer.TileSources.Add(tileSource); //指定图层的TileSource
18 tileLayer.Opacity =0.9;
19 myMap.Children.Add(tileLayer); //将图层叠加在地图上
20 
21 this.myMap.ViewChangeOnFrame +=delegate(objectsender, Microsoft.Maps.MapControl.MapEventArgs e)
22 {
23 doublelongitude =this.myMap.Center.Longitude;
24 doublelatitude =this.myMap.Center.Latitude;
25 
26 this.tbLatitude.Text =latitude.ToString();
27 this.tbLongitude.Text =longitude.ToString();
28 };
29 this.myMap.Mode =newMercatorMode();
30 }
31 }
32 }

      

相关说明

本文属学习笔记文章,愿与有志者共同学习交流。欢迎转载,但请在明显地位标记本文的原文连接。

作      者:Beniao     Bing Maps开发群:75662563

文章出处:http://beniao.cnblogs.com/  或  http://www.cnblogs.com/

分类: [03] Bing Maps/DE

转载于:https://www.cnblogs.com/meimao5211/p/3278517.html

【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)相关推荐

  1. scrapy爬虫学习系列七:scrapy常见问题解决方案

    scrapy爬虫学习系列七:scrapy常见问题解决方案 参考文章: (1)scrapy爬虫学习系列七:scrapy常见问题解决方案 (2)https://www.cnblogs.com/zhaoji ...

  2. Android音视频学习系列(七) — 从0~1开发一款Android端播放器(支持多协议网络拉流本地文件)

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  3. Vue.js学习系列七——Vue服务器渲染Nuxt学习

    我又回来啦~这次我们来学习Vue的服务器渲染SSR. 关于SSR的文章网上很多,一开始看得我云里雾里.然后去Vue.js 服务器渲染指南和nuxt官网看了看,发现文章大多都是搬运官网的内容,真正讲的清 ...

  4. 【Silverlight】Bing Maps学习系列(二):通过Bing Maps Silverlight Control如何显示地图...

    如本系列第一篇你所介绍的,开发基于Silverlight的Bing Maps除了开发环境还需要一个开发Key,这个Key是用来做什么的呢?Silverlight控件在做地图呈现的时候它是一个必不可少的 ...

  5. Silverlight Blend动画设计系列七:模糊效果(BlurEffect)与阴影效果(DropShadowEffect)...

    模糊效果(BlurEffect)与阴影效果(DropShadowEffect)是两个非常实用和常用的两个特效,比如在开发相册中,可以对照片的缩略图添加模糊效果,在放大照片的过程中动态改变照片的大小和模 ...

  6. 【Silverlight】Bing Maps学习系列(三):如何控制地图

    本篇主要介绍如何对地图的一些常用控制操作,包括地图加载模式.根据精度和纬度定位.变焦程度等. 一.动态设置地图加载模式 在本系列二中介绍了地图加载模式,可以给地图控件设置一种模式的地图加载模式,呈现数 ...

  7. 【Silverlight】Bing Maps学习系列(九):自定义功能导航条(Custom NavigationBar)

    微软Bing Maps Silverlight Control实现了最基本的地图呈现功能,其功能其他是非常的强大,可以支持很多的扩展功能开发,本文通过自定义功能导航菜单为例介绍基于Bing Maps ...

  8. WorldWind学习系列七:Load/Unload Plugins——投石问路篇

    原文转自:http://www.cnblogs.com/wuhenke/archive/2009/12/15/1625102.html 今天原计划把Load/Unload Plugins完全弄明白,可 ...

  9. Java NIO学习系列七:Path、Files、AsynchronousFileChannel

    相对于标准Java IO中通过File来指向文件和目录,Java NIO中提供了更丰富的类来支持对文件和目录的操作,不仅仅支持更多操作,还支持诸如异步读写等特性,本文我们就来学习一些Java NIO提 ...

最新文章

  1. python使用什么注释语句和运算-python 闯关之路一(语法基础)
  2. WINCE BSP中source文件中的宏定义
  3. FPGA机器学习之学习的方向
  4. Objects as Points论文总结
  5. 项目工时估算PERT法
  6. 无源晶振负载电容值CL匹配方法及说明
  7. h.265/HEVC 和 h.264/AVC 比较,在技术上的改进和优势
  8. 计算机语言的正交性,什么是“正交性”?
  9. Excel查找快捷键:Ctrl+F
  10. java graphics颜色_在Java Graphics对象中设置背景色
  11. 操作系统实验六、死锁问题实验——单车道问题
  12. 尼日利亚4g频段_世界各国全球主要4g频段资料
  13. 为什么要处理自然语言? | NLP基础
  14. 微信小说,微信游戏系统域名被屏蔽是怎么回事
  15. 瀑布图有什么用?怎么画?
  16. 十一、非参数检验:使用python进行卡方两样本独立性检验
  17. 【Unity编辑器扩展实践】、扩展Hierarchy菜单
  18. 电容实际等效模型(容抗、感抗、品质因数Q)
  19. 用于拆解和组合PDF中各个对象的shell脚本
  20. 解决Win10更新后兼容性助手提示VMware虚拟机无法在Windows上运行的问题

热门文章

  1. [转]Gearman分布式远程过程处理框架
  2. Verilog中可综合与不可综合的语句
  3. c++职工管理系统主函数代码
  4. python 习题集锦
  5. Spark、Flink、CarbonData技术实践最佳案例解析
  6. 动手打造自己强大的右键菜单
  7. Oracle 基础篇 --- 表空间的操作
  8. Smali语法简单介绍
  9. 对实体类的所有String类型的成员变量值trim
  10. 2、cocos2d-js引擎的安装和新建