在接触的过程中,经常被一些 坐标、点、像素等概念困扰。
今天就来总结一下这些概念直接的关系
在百度地图API中,有如下几种坐标系:
经纬度:通过经度(longitude)和纬度(latitude)描述的地球上的某个位置。
平面坐标:投影之后的坐标(用x和y描述),用于在平面上标识某个位置。
可视区域坐标:地图可视区域的坐标系(用x和y描述)。
经纬度
这就是我们常说的地图上的坐标,经度(longitude)和纬度(latitude)是通过GPS的WGS84坐标系来显示的。但是如果要在baidu地图中显示这个点,就要经过一个转换了,否则误差很大。
GeoPoint geoPoint = new GeoPoint((int) ( 22.560034 * 1E6),
(int) (113.940657 * 1E6));//先是纬度、然后经度
GeoPoint p2 = CoordinateConvert.bundleDecode(CoordinateConvert.fromWgs84ToBaidu(geoPoint));
int | getLatitudeE6()
|
int | getLongitudeE6()
|
void | setLatitudeE6(int latitudeE6)
|
void | setLongitudeE6(int longitudeE6) |
我们得到的坐标,要通过*1E6才能变成微度
也就是说 返回的int 要/1E6 才能变成double的正式坐标
平面坐标
就是我们用的Point类。用x,y坐标系来反应经纬坐标的投影点。一个单位就是一个像素
这里的Point(lng:Number, lat:Number) 是经度+纬度, GeoPoint(int latitudeE6, int longitudeE6)是纬度在前的哦
也就是说 返回的int 要/1E6 才能变成double的正式坐标
平面坐标
就是我们用的Point类。用x,y坐标系来反应经纬坐标的投影点。一个单位就是一个像素
这里的Point(lng:Number, lat:Number) 是经度+纬度, GeoPoint(int latitudeE6, int longitudeE6)是纬度在前的哦
![Android 百度地图API学习-----坐标 - quanquan127@126 - 学无止境 Android 百度地图API学习-----坐标 - quanquan127@126 - 学无止境](http://img6.ph.126.net/hVfvs921LUxEBgQQnUuAwA==/6597684393656910526.jpg)
GeoPoint geoPoint = new GeoPoint((int) ( 22.560034 * 1E6),(int) (113.940657 * 1E6));
Point point = mapView.getProjection().toPixels(geoPoint, null);
使用Projection的方法进行转换的
可视区域坐标
说白了,就是显示容器以左上角为原点显示的位置