【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 public MainPage()
 2 {
 3     InitializeComponent();
 4     MapTileLayer tileLayer = new MapTileLayer();
 5     LocationRectTileSource tileSource = new LocationRectTileSource(
 6         new UriBuilder(@"http://images.cnblogs.com/cnblogs_com/beniao/BingMaps/China0.jpg").Uri.ToString(),
 7         new LocationRect(new Location(60, 60), new Location(13, 140)),
 8         new Range<double>(1, 16));
 9     tileLayer.TileSources.Add(tileSource);
10     tileLayer.Opacity = 0.9;
11     myMap.Children.Add(tileLayer);
12     this.myMap.ViewChangeOnFrame += delegate(object sender, Microsoft.Maps.MapControl.MapEventArgs e)
13     {
14         double longitude = this.myMap.Center.Longitude;
15         double latitude = this.myMap.Center.Latitude;
16 
17         this.tbLatitude.Text = latitude.ToString();
18         this.tbLongitude.Text = longitude.ToString();
19     };
20     this.myMap.Mode = new MercatorMode();
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 namespace UseTileLayers
 2 {
 3     public partial class MainPage : UserControl
 4     {
 5         public MainPage()
 6         {
 7             InitializeComponent();
 8             //初始化一个Uri对象,指向中文必应地图的Tile系统
 9             UriBuilder tileSourceUri = new UriBuilder("http://r2.tiles.ditu.live.com/tiles/r{quadkey}.png?g=41");
10 
11             MapTileLayer tileLayer = new MapTileLayer(); //初始化一个图层
12             LocationRectTileSource tileSource = new LocationRectTileSource(
13             tileSourceUri.Uri.ToString(),
14             new LocationRect(new Location(60, 60), new Location(13, 140)),
15                 //初始化LocationRectTileSource对象,设定显示范围及放大级别
16             new Range<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(object sender, Microsoft.Maps.MapControl.MapEventArgs e)
22             {
23                 double longitude = this.myMap.Center.Longitude;
24                 double latitude = this.myMap.Center.Latitude;
25 
26                 this.tbLatitude.Text = latitude.ToString();
27                 this.tbLongitude.Text = longitude.ToString();
28             };
29             this.myMap.Mode = new MercatorMode();
30         }
31     }
32 }

      

相关说明

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

作      者:Beniao     Bing Maps开发群:75662563

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

 
 

【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)的更多相关文章

  1. Bing Maps进阶系列七:Bing Maps功能导航菜单华丽的变身

    Bing Maps进阶系列七:Bing Maps功能导航菜单华丽的变身 Bing Maps Silverlight Control所提供的功能导航是非常强大的,在设计上对扩展的支持非常好,提供了许多用 ...

  2. 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps

    [Silverlight]Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps 上个月微软必应地图(Bing Maps) ...

  3. 【Silverlight】Bing Maps学习系列(六):使用扩展模式(Extended Modes)(转)

    [Silverlight]Bing Maps学习系列(六):使用扩展模式(Extended Modes) 微软Bing Maps推出有有段时间了,通过不断的改进和新的地图更新,现在已经基本上形成了一套 ...

  4. 【Silverlight】Bing Maps学习系列(五):绘制多边形(Polygon)图形(转)

    [Silverlight]Bing Maps学习系列(五):绘制多边形(Polygon)图形 Bing Maps Silverlight Control支持用户自定义绘制多边形(Polygon)图形, ...

  5. 【Silverlight】Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer)(转)

    [Silverlight]Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer) 如果我们需要在Bing Maps中加入一个小图钉标记,该如何实现了? ...

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

    [Silverlight]Bing Maps学习系列(三):如何控制地图 本篇主要介绍如何对地图的一些常用控制操作,包括地图加载模式.根据精度和纬度定位.变焦程度等. 一.动态设置地图加载模式 在本系 ...

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

    [Silverlight]Bing Maps学习系列(二):通过Bing Maps Silverlight Control如何显示地图 如本系列第一篇你所介绍的,开发基于Silverlight的Bin ...

  8. 【Silverlight】Bing Maps学习系列(一):开发前的准备工作

    [Silverlight]Bing Maps学习系列(一):开发前的准备工作 微软推出的Bing Maps地图引擎,对外开放了Silverlight和Ajax两种客户端API,同时微软针对全球地图还推 ...

  9. 前端学习 第七弹: Javascript实现图片的延迟加载

    前端学习 第七弹: Javascript实现图片的延迟加载 为了实现图片进入视野范围才开始加载首先: <img    src="" x-src="/acsascas ...

随机推荐

  1. CSU 2018年12月月赛 G(2219): Coin

    Description 有这样一个众所周知的问题: 你面前有7个硬币,其中有一个劣质的(它比正常的硬币轻一点点),你有一个天平,问需要你需要使用天平多少次能保证找到那个劣质的硬币. 众所周知的算法是: ...

  2. jenkins构建项目记录1

    jenkins安装见上篇随笔 1.新建任务 2.构建一个自由风格的软件项目 3.源码管理设置 4.构建环境 5.构建 6.构建后操作

  3. [Python3网络爬虫开发实战] 3.1-使用urllib

    在Python 2中,有urllib和urllib2两个库来实现请求的发送.而在Python 3中,已经不存在urllib2这个库了,统一为urllib,其官方文档链接为:https://docs.p ...

  4. STM32F407 GPIO原理 个人笔记

    datasheet(STM32F407ZGT6.pdf)中,IO structure 为FT,表示容忍5V电压 后面的uart1_TX之类,表示端口复用 共有A~G7组IO口, 每组16个IO口:0~ ...

  5. Leetcode 137.只出现一次的数字II

    只出现一次的数字II 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? ...

  6. 数据库 SQL SQL转义

    SQL转义 @author ixenos 前言 类似文件分隔符在不同系统的实现不同,我们需要一个中间的转义字符来作为接口,各厂商再具体实现 而SQL的转义语法主要为了支持各种数据库普遍支持的特性,但各 ...

  7. Oracle导出txt文本文件

    转自: http://blog.csdn.net/ahngzw77/article/details/8652722 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如:  ...

  8. HDU 4479 权递增的最短路问题

    题目大意: 找一条节点 1 到节点 N 的最短路,保证这条路上每一条边都比前一条边长 dp[i] 表示在当前状态下1到i的最小值 先将所有边根据边的长度排一个序,再每次取出同一段相同长度的边去更新当前 ...

  9. DEA中MAVEN项目有多个子目录,如何加载构建

    ddts这个项目有三个子目录,每个子目录下面也都有一个 pom.xml       此时需要 右键子目录的 pom.xml,选择Add as Maven Project,在上图中cli.core两个目 ...

  10. idea使用之maven本地索引更新

    idea使用起来的确挺顺手的,但遇到一些问题时,直接百度很难有答案,只能自己慢慢摸索了. 今天在倒腾idea仓库索引的时候,就出事情啦. 先说idea更新本地仓库索引吧,打开settings--> ...