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

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

 

源码来自:https://pan.quark.cn/s/7a757c0c80ca 《在Neovim中运用Lua的详尽教程》在当代文本编辑器领域,Neovim凭借其卓越的性能、可扩展性以及高度可定制的特点,赢得了程序开发者的广泛青睐。 其中,Lua语言的融入更是为Neovim注入了强大的活力。 本指南将深入剖析如何在Neovim中高效地运用Lua进行配置和插件开发,助你充分发挥这一先进功能的潜力。 一、Lua为何成为Neovim的优选方案经典的Vim脚本语言(Vimscript)虽然功能完备,但其语法结构与现代化编程语言相比显得较为复杂。 与此形成对比的是,Lua是一种精简、轻量且性能卓越的脚本语言,具备易于掌握、易于集成的特点。 因此,Neovim选择Lua作为其核心扩展语言,使得配置和插件开发过程变得更加直观和便捷。 二、安装与设置在Neovim中启用Lua支持通常十分简便,因为Lua是Neovim的固有组件。 然而,为了获得最佳体验,我们建议升级至Neovim的最新版本。 可以通过`vim-plug`或`dein.vim`等包管理工具来安装和管理Lua插件。 三、Lua基础在着手编写Neovim的Lua配置之前,需要对Lua语言的基础语法有所掌握。 Lua支持变量、函数、控制流、表(类似于数组和键值对映射)等核心概念。 它的语法设计简洁明了,便于理解和应用。 例如,定义一个变量并赋值:```lualocal myVariable = "Hello, Neovim!"```四、Lua在Neovim中的实际应用1. 配置文件:Neovim的初始化文件`.vimrc`能够完全采用Lua语言编写,只需在文件首部声明`set runtimepath^=~/.config/nvim ini...
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值