控制地图显示范围的重要参数
2009-04-13 14:39
369 查看
控制地图显示范围有几个重要的参数:
1,Zoom,当前视窗显示的地图范围的宽度;
2,Center,当前视窗显示的地图范围的中心点;
3,CurrentRange,当前视窗显示的地图范围。
下面我们详细介绍这几个参数的涵义、相互关系、以及如何控制地图显示范围。
这三个参数之间有什么关系?下面我们通过一个题目来说明。
已知当前视窗的地图中心点Center的坐标(X中心,Y中心)、地图范围的宽度Zoom、以及视窗屏幕画布的大小Size,求当前视窗的显示范围CurrentRange,即CurrentRange.Xmin、CurrentRange.Ymin和CurrentRange.Xmax、CurrentRange.Ymax?
解:CurrentRange.Width = Zoom;
CurrentRange.Xmin = X中心-Zoom/2;
CurrentRange.Xmax = X中心+Zoom/2;
设PixelWidth为一个象素横向所代表的实际地图宽度、PixelHeight为一个象素纵向所代表的实际地图高度,为了保持要素显示的不变形,要求PixelWidth = PixelHeight;
即CurrentRange.Width / Size.Width = CurrentRange.Height / Size.Height;
即Zoom / Size.Width = CurrentRange.Height / Size.Height;
即CurrentRange.Height= (Zoom / Size.Width) * Size.Height;
CurrentRange.Ymin=Y中心—CurrentRange.Height/2;
CurrentRange.Ymax=Y中心+CurrentRange.Height/2;
通过以上这道题目的求解,使我们认识到,Zoom、Center、CurrentRange这三个参数使紧密关联的,只要改变其中任意一个参数,其他两个中至少有一个会改变,设置这些参数的值,是我们控制地图显示范围的重要手段,所以,经常在二次开发过程中采用到。
请大家再思考一个问题:地图在用放大工具放大的时候,如果拉出的放大框是一个狭长的矩形,那放大后的结果会是怎样?以上三个参数发生了怎样的改变?
解:根据人的视觉和心理习惯,中心点,即为这个放大框的矩形中心点,通过屏幕坐标转地图坐标求出(X中心,Y中心);
如果拉出的放大框是一个横向狭长的矩形,就以横向为标准;
则横向跨度Zoom即为放大框所包含的地图宽度(通过屏幕坐标转地图坐标,计算出放大框所包含的横向跨度Zoom,即CurrentRange.Width);
纵向跨度CurrentRange.Height,
设PixelWidth为一个象素横向所代表的实际地图宽度、PixelHeight为一个象素纵向所代表的实际地图高度,为了保持要素显示的不变形,要求PixelWidth = PixelHeight;
Zoom / Size.Width = CurrentRange.Height / Size.Height;
CurrentRange.Height = (Zoom / Size.Width) * Size.Height;
这样,控制地图显示范围的三个参数都可以求出;
如果拉出的放大框是一个纵向狭长的矩形,就以纵向为标准;
则纵向跨度CurrentRange.Height即为放大框所包含的地图高度(通过屏幕坐标转地图坐标,计算出放大框所包含的纵向跨度);
横向跨度CurrentRange.Width 即Zoom,
Zoom / Size.Width = CurrentRange.Height / Size.Height;
Zoom = (CurrentRange.Height / Size.Height) * Size.Width;
这样,控制地图显示的三个参数也可以求出
以上讨论的都是在不改变显示屏幕画布的情况下,如果我们改变一下显示屏幕的画布大小,地图的显示范围该如何变化?以上三个参数又该发生怎样的改变?
解:前提是不管屏幕画布怎么改变,Zoom始终不变、中心点始终不变;
如果横向上拉伸或缩小,横向跨度Zoom没有改变,改变的是PixelWidth(一个象素横向所代表的实际地图宽度);
横向拉伸Size.Width变大,则PixelWidth=Zoom/Size.Width变小,纵向上Size.Height没变,又由于PixelHeight=PixelWidth,所以Size.Height*PixelHeight变小,高度变矮了;
横向缩小,PixelWidth变大,纵向上Size.Height没变,又由于PixelHeight=PixelWidth,所以Size.Height*PixelHeight变大,高度变高了;
如果纵向上拉伸或压扁,由于横向上Zoom的值没有改变,横向的Size.Width的值也没改变,横向上PixelWidth就不会改变,由于PixelHeight=PixelWidth,纵向上的拉伸,Size.Height*PixelHeight变大,导致纵向上显示内容变多,反之,变少
以上分析了控制地图显示范围的三个参数,以及画布或拉框浏览对显示范围的影响,在GIS二次开发中经常会遇到,这些考虑都是按照人的视觉和心理习惯来设计的,读者也可以完全不这样做,可以有自己的设计,这个主动权在您自己手里。
1,Zoom,当前视窗显示的地图范围的宽度;
2,Center,当前视窗显示的地图范围的中心点;
3,CurrentRange,当前视窗显示的地图范围。
下面我们详细介绍这几个参数的涵义、相互关系、以及如何控制地图显示范围。
这三个参数之间有什么关系?下面我们通过一个题目来说明。
已知当前视窗的地图中心点Center的坐标(X中心,Y中心)、地图范围的宽度Zoom、以及视窗屏幕画布的大小Size,求当前视窗的显示范围CurrentRange,即CurrentRange.Xmin、CurrentRange.Ymin和CurrentRange.Xmax、CurrentRange.Ymax?
解:CurrentRange.Width = Zoom;
CurrentRange.Xmin = X中心-Zoom/2;
CurrentRange.Xmax = X中心+Zoom/2;
设PixelWidth为一个象素横向所代表的实际地图宽度、PixelHeight为一个象素纵向所代表的实际地图高度,为了保持要素显示的不变形,要求PixelWidth = PixelHeight;
即CurrentRange.Width / Size.Width = CurrentRange.Height / Size.Height;
即Zoom / Size.Width = CurrentRange.Height / Size.Height;
即CurrentRange.Height= (Zoom / Size.Width) * Size.Height;
CurrentRange.Ymin=Y中心—CurrentRange.Height/2;
CurrentRange.Ymax=Y中心+CurrentRange.Height/2;
通过以上这道题目的求解,使我们认识到,Zoom、Center、CurrentRange这三个参数使紧密关联的,只要改变其中任意一个参数,其他两个中至少有一个会改变,设置这些参数的值,是我们控制地图显示范围的重要手段,所以,经常在二次开发过程中采用到。
请大家再思考一个问题:地图在用放大工具放大的时候,如果拉出的放大框是一个狭长的矩形,那放大后的结果会是怎样?以上三个参数发生了怎样的改变?
解:根据人的视觉和心理习惯,中心点,即为这个放大框的矩形中心点,通过屏幕坐标转地图坐标求出(X中心,Y中心);
如果拉出的放大框是一个横向狭长的矩形,就以横向为标准;
则横向跨度Zoom即为放大框所包含的地图宽度(通过屏幕坐标转地图坐标,计算出放大框所包含的横向跨度Zoom,即CurrentRange.Width);
纵向跨度CurrentRange.Height,
设PixelWidth为一个象素横向所代表的实际地图宽度、PixelHeight为一个象素纵向所代表的实际地图高度,为了保持要素显示的不变形,要求PixelWidth = PixelHeight;
Zoom / Size.Width = CurrentRange.Height / Size.Height;
CurrentRange.Height = (Zoom / Size.Width) * Size.Height;
这样,控制地图显示范围的三个参数都可以求出;
如果拉出的放大框是一个纵向狭长的矩形,就以纵向为标准;
则纵向跨度CurrentRange.Height即为放大框所包含的地图高度(通过屏幕坐标转地图坐标,计算出放大框所包含的纵向跨度);
横向跨度CurrentRange.Width 即Zoom,
Zoom / Size.Width = CurrentRange.Height / Size.Height;
Zoom = (CurrentRange.Height / Size.Height) * Size.Width;
这样,控制地图显示的三个参数也可以求出
以上讨论的都是在不改变显示屏幕画布的情况下,如果我们改变一下显示屏幕的画布大小,地图的显示范围该如何变化?以上三个参数又该发生怎样的改变?
解:前提是不管屏幕画布怎么改变,Zoom始终不变、中心点始终不变;
如果横向上拉伸或缩小,横向跨度Zoom没有改变,改变的是PixelWidth(一个象素横向所代表的实际地图宽度);
横向拉伸Size.Width变大,则PixelWidth=Zoom/Size.Width变小,纵向上Size.Height没变,又由于PixelHeight=PixelWidth,所以Size.Height*PixelHeight变小,高度变矮了;
横向缩小,PixelWidth变大,纵向上Size.Height没变,又由于PixelHeight=PixelWidth,所以Size.Height*PixelHeight变大,高度变高了;
如果纵向上拉伸或压扁,由于横向上Zoom的值没有改变,横向的Size.Width的值也没改变,横向上PixelWidth就不会改变,由于PixelHeight=PixelWidth,纵向上的拉伸,Size.Height*PixelHeight变大,导致纵向上显示内容变多,反之,变少
以上分析了控制地图显示范围的三个参数,以及画布或拉框浏览对显示范围的影响,在GIS二次开发中经常会遇到,这些考虑都是按照人的视觉和心理习惯来设计的,读者也可以完全不这样做,可以有自己的设计,这个主动权在您自己手里。
相关文章推荐
- 地图坐标与屏幕坐标的转换&&控制地图显示范围的参数
- 控制地图显示范围的参数
- Google maps V3控制地图的缩放和显示范围
- 控制地图显示范围
- MKMapView上获取自身当前位置并将地图显示范围控制在自身位置周围
- 网上看到的ArcEngine控制地图显示范围的好方法(记下)
- AE二维地图Map选择范围,加到三维ArcScene控件中显示、渲染
- AE二维地图Map选择范围,加到三维ArcScene控件中显示、渲染
- ARCGIS FOR SILVERLIGHT 地图缩放范围控制
- 有关机械手臂控制中的两个重要输入参数
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- Google Maps API V3学习【限制地图缩放级别和显示范围 包含V2版本程序】
- CSS控制文字超出范围显示省略号
- 关于百度地图API显示地区范围控制的问题
- oracle数据库中重要的文件(控制文件、数据文件、重写日志文件、归档日志文件、初始化参数文件)
- Google map获取手机屏幕当前显示地图的范围
- Linux控制台显示大小控制参数vga
- 高版本teamview的成为被控制端时,会一直出现“正在初始化显示参数”
- BingMaps学习笔记(一):控制自己加载瓦片地图显示区域和缩放级数
- android 百度地图多个点显示在屏幕范围内的地图上