OpenLayers中地图缩放级别的设置方法

来源于:http://www.cnblogs.com/sailheart/archive/2011/03/15/1984519.html

一、概述

在OpenLayers中,地图必须具有一个缩放级别的范围,缩放级别可以用比例尺(scale)或者分辨率(resolution)表示。

比例尺——屏幕上1米代表多少地图坐标单位;分辨率——屏幕上一个像素代表多少地图坐标单位。
两者的转换关系是:scale = resolution * 72 * 39.3701(1米=39.3701英寸,1英寸=72像素)

地图具有一个总的缩放级别,每个图层可以有各自的缩放级别,这样可以控制图层只在合适的级别上显示。

二、缩放级别范围的确定方法

1、比例尺数组或者分辨率数组来确定(相邻两级之间不一定是2倍的关系,可以是任意值)。示例:

resolutions: [1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125]
scales: [50000000, 30000000, 10000000, 5000000]

2、用最大分辨率(maxResolution)和缩放级别总数(numZoomLevels)确定,相邻两级是2倍关系

2.1最大分辨率的确定方法:

a. 直接指定maxResolution,例如:

maxResolution: 0.17578125

b. 直接指定minScale,例如:

minScale: 50000000

c. 由maxExtent确定(maxResolution需设置为‘auto’),例如:

maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
maxResolution: "auto"

2.2 缩放级别总数的确定方法:

a.  直接指定numZoomLevels,例如:numZoomLevels: 5
b.  由最大分辨率和最小分辨率的比值确定,最小分辨率同2.1有三种方法可以确定:

b.1 直接指定minResolution
    b.2 直接指定maxScale
    b.3 由minExtent确定(minResolution需设置为‘auto’)

如果指定的参数过多,导致缩放级别范围不一致时,上述方法顺序决定了OpenLayers确定缩放级别范围的优先级。

时间: 2024-08-29 08:50:34

OpenLayers中地图缩放级别的设置方法的相关文章

地图比例尺与高德地图中的缩放级别(0-20)的映射关系与转换方法

一.概述 近期基于高德地图进行了不少开发工作,期间遇到了一个与比例尺相关的问题. 如何将地图比例尺与高德地图中的缩放级别(0-20)对应起来? 二.映射关系 [高德地图api比例尺][https://www.cnblogs.com/yesyes/p/6785705.html] 三.转换方法 高德地图中的zoom是一个float类型的参数,取值范围为(0-20),此处没有做到精细化转换,待后续更新! /** * "scale-zoom"映射关系:https://www.cnblogs.c

android百度地图中的地图缩放级别

前期搭建百度地图的环境就不说了,网上一搜一大把,这里只讲地图的缩放,大神可以直接绕道 首先在类的内部初始化一个百度地图的对象 private BaiduMap mBaiduMap; 然后在OnCreate方法中初始化 mBaiduMap = mMapView.getMap(); mMapView为百度控件com.baidu.mapapi.map.MapView的ID初始化后的名称 然后 MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactor

【Android】高德地图 缩放级别及像素以及地图上的点转化成屏幕上的点

/** * 调节地图到正好放置查询范围的所有点 * @param centerLatLng 中心点 * @param range 查询范围(米) */  private void adjustCamera(LatLng centerLatLng,int range) {  //http://www.eoeandroid.com/blog-1107295-47621.html //当前缩放级别下的比例尺  //"每像素代表" + scale + "米" float s

【ASP】Window2008站点安全设置,IIS7/IIS7.5中目录执行权限的设置方法

最近帮一个朋友管理Window 2008服务器,发现有个站点是用asp写的,更可怕的是还有传说中的“上传漏洞”,在上传文件夹中有好多的可执行的asp.php文件,算是shell后门脚本吧.怎么处理这个漏洞问题???最快捷的方法就是让这些文件“不可执行”! 下面是百度出来的解决方案: 我们在建站的时候,通常有些目录必须给写入权限,这个时候这些目录就很可能 被人写入脚本文件,为了将安全性维护得更好,我们可以关闭这些有写入权限的目录的脚本执行权限.IIS6的时候,我们很容易找到关闭的地方,而IIS7时

如何在RHEV虚拟机中使用USB设备的设置方法

使用 SPICE 连接协议的虚拟机可以被配置为直接使用客户端系统上的 USB 设备. 只有在虚拟机处于活跃的状态,并且正通过客户端使用时,客户端上的 USB 设备才可以被重定向到虚拟机上.每次当一个 USB 设备被插入到客户端时,USB 重定义功能可以被手工启动,或在 SPICE 客户端菜单中设置为自动重定向到活跃的虚拟机. 请注意:"客户端系统(client machine)"和"虚拟客户端系统(guest machine)"之间的区别.客户端系统(在本文档中有时

百度地图实时侦听鼠标滚轮获取地图zoom缩放级别

百度地图api提供的获取地图缩放级别的方法比较单一,就一个getZoom()方法,这个方法能够获取一次地图缩放级别,后面随着鼠标滚轮的滚动,地图缩放级别被改变,就无法再获取地图缩放级别了,具体api参考:http://developer.baidu.com/map/reference/index.php?title=Class:%E6%9E%81%E9%80%9F%E7%89%88%E6%A0%B8%E5%BF%83%E7%B1%BB/map 如题,若想实时获取地图的缩放级别,小博主是这样做的,

腾讯地图关于限制地图的显示范围和缩放级别总结

这个可以在初始化地图的时候使用(有误求指出) // 先声明地图需要的变量 var searchService,markers = [],lables = [],markerIndex=0,map,circles = []; //初始化地图函数 自定义函数名init function initMap(con) { //定义map变量 调用 qq.maps.Map() 构造函数 获取地图显示容器 //center1为地图的中心点 var center1 = new qq.maps.LatLng(xx

Linux的/etc/inittab文件中init级别设置成6(重启)或者不支持级别的解决方法

如果不小心将/etc/inittab文件中的init级别设置成6(重启)或者不支持级别,系统就不能正常启动.本博客讲解如何通过Grub来解决这个问题. 1. 在Linux启动过程中,按Esc键进入Grub界面 2. 按e修改当前Linux系统的配置 3. 选择第二行,按e键,并按如下步骤执行 1)在出现的命令行后加1(单用户模式): 2)按Enter键接收操作并后退到当前Linux配置页面: 3)按b重启Linux. 4. 重启后进入Linux系统,修改/etc/inittab文件.将init级

百度地图API一:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图

百度地图中根据页面中的point,自动设置缩放级别和视图中心,将所有的point在视图范围内展示. var points = [point1, point2,point3]; var view = map.getViewport(eval(points)); var mapZoom = view.zoom; var centerPoint = view.center; map.centerAndZoom(centerPoint,mapZoom);