1. 概念解释
首先搞清楚什么是火星坐标?到底有哪些坐标体系?由来是怎样的?
1.1 名词解释
坐标系统:用于定位的系统,就跟二维笛卡尔坐标系统一样,一个点使用(x,y),就能确定该点在笛卡尔坐标系统中的唯一位置。这里讲的坐标系统,相对于笛卡尔坐标系统,要复杂许多,但作用却都是一样,主要用于定位,也就是精确地定位地表上的一点。
地理坐标系统:WGS84就是一种地理坐标系统。地理坐标坐标是对地球进行简单几何建模,比如将地球看成一个球体或者类球体,然后再将地表上点投影到该球面上形成的坐标就是地理坐标系统。WGS84就是定义了如何将地球抽象成球体或者类球体的规则。或者简单地来说,WGS84就是一堆参数,用于建立球体或者类球体,来近似地球。
投影坐标系统:由于地球是一个球状,所以一般将其某个区域投影在平面上,形成的坐标系称为投影坐标系。
1.2 简称解释
WGS84 :地理坐标系统,Google Earth和中国外的Google Map使用,另外,目前基本上所有定位空间位置的设备都使用这种坐标系统,例如手机的GPS系统。
GCJ-02:投影坐标系统,也就是我们平常所说的火星坐标系,Google Map中国、高德和腾讯好像使用,这个是中国自己在WGS84基础上加密而成,目的显而易见。
BD09:投影坐标系统,百度地图使用,在GCJ-02基础上二次加密而成。
API |
坐标系 |
百度地图API |
百度坐标 |
腾讯搜搜地图API |
火星坐标 |
搜狐搜狗地图API |
搜狗坐标 |
阿里云地图API |
火星坐标 |
图吧MapBar地图API |
图吧坐标 |
高德MapABC地图API |
火星坐标 |
灵图51ditu地图API |
火星坐标 |
1.3高德计算经纬度工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| public class AmapUtils {
public static double calculateLineDistance(double lon1, double lat1, double lon2, double lat2) { double d1 = 0.01745329251994329D; double d2 = lon1; double d3 = lat1; double d4 = lon2; double d5 = lat2; d2 *= d1; d3 *= d1; d4 *= d1; d5 *= d1; double d6 = Math.sin(d2); double d7 = Math.sin(d3); double d8 = Math.cos(d2); double d9 = Math.cos(d3); double d10 = Math.sin(d4); double d11 = Math.sin(d5); double d12 = Math.cos(d4); double d13 = Math.cos(d5); double[] arrayOfDouble1 = new double[3]; double[] arrayOfDouble2 = new double[3]; arrayOfDouble1[0] = (d9 * d8); arrayOfDouble1[1] = (d9 * d6); arrayOfDouble1[2] = d7; arrayOfDouble2[0] = (d13 * d12); arrayOfDouble2[1] = (d13 * d10); arrayOfDouble2[2] = d11; double d14 = Math.sqrt((arrayOfDouble1[0] - arrayOfDouble2[0]) * (arrayOfDouble1[0] - arrayOfDouble2[0]) + (arrayOfDouble1[1] - arrayOfDouble2[1]) * (arrayOfDouble1[1] - arrayOfDouble2[1]) + (arrayOfDouble1[2] - arrayOfDouble2[2]) * (arrayOfDouble1[2] - arrayOfDouble2[2]));
return (Math.asin(d14 / 2.0D) * 12742001.579854401D); }
}
|