一、名词解释
分辨率(resolution,港台称之为解析度)就是屏幕图像的精密度,是指显示器所能显示的像素的多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。(百度百科)
而地面分辨率是以一个像素(pixel)代表的地面尺寸(米)。
二、百度地图坐标概述
百度地图使用经纬度地理坐标(lng, lat)和像素坐标(x, y)两种,同时百度api提供两种坐标转换的方法
经纬度转换为地理坐标的方法为:
方法 | 返回值 | 描述 |
---|
pointToPixel(point:Point) | Pixel | 经纬度坐标转换为像素坐标。 |
地理坐标转换为经纬度的方法为:
方法 | 返回值 | 描述 |
---|---|---|
pixelToPoint(pixel:Pixel) | Point | 像素坐标转换为经纬度坐标。 |
------------------------------------------------
博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!
店名:
小鱼尼莫手工饰品店
经营:
发饰、头花、发夹、耳环等(手工制作)
网店:
http://shop117066935.taobao.com/
---------------------------------------------------------------------
继续正题...
三、分辨率计算方法
a) 分辨率与地图比例尺之间换算方法:
Scale:地图比例尺;
Resolution:地图分辨率;
PPI:每英寸的像素点数。
具体参考文章: http://www.cnblogs.com/qiongmiaoer/archive/2013/03/13/2958288.html
b) 分辨率根据定义( 实际距离/像素值 ),在大比例尺地图下可以近似的用此方法进行计算,就不考虑地球形状因素了,计算方法为:
分辨率res = (lng1-lng2)/ (x1-x2);
或 res = (lat1-lat2)/(y1-y1);
四、一般地图中分辨率特性
同级别地图中分辨率是固定值,因而无论使用经度还是纬度计算,结果都是不变的。
五、百度地图中分辨率特性
同级别地图中百度分辨率不是固定值,且经度方向,纬度方向变化幅度也不相同,可以通过以下方法测试:
var bounds = map.getBounds(); //假设定义好了百度地图为map var geoPointLB = bounds.getSouthWest(); //左下角点地理坐标 var geoPointRT = bounds.getNorthEast(); //右上角点地理坐标 var pixelPointLB = BaiduMap.map.pointToPixel(geoPointLB); //左下角点像素坐标 var pixelPointRT = BaiduMap.map.pointToPixel(geoPointRT); //右上角点像素坐标 var resX = (geoPointRT.lng - geoPointLB.lng) / (pixelPointRT.x - pixelPointLB.x); //分辨率 = 经度差 / x差 var resY = (geoPointRT.lat - geoPointLB.lat) / (pixelPointRT.y - pixelPointLB.y); //分辨率 = 纬度差 / y差
测试结果:resX和resY是不同的。
原因:百度地图为了数据保密做的一些“纠正”,防止一些不法用途。
目前解决方案:将百度地图分为经度方向分辨率、纬度方向分辨率,可以一定程度上减小误差,具体实现方法同上方代码示例。
店名:
小鱼尼莫手工饰品店
经营:
发饰、头花、发夹、耳环等(手工制作)
网店:
http://shop117066935.taobao.com/