由于XX机票的项目,要用到酒店坐标定位,但是呢,服务器提供的坐标是高德 坐标,但是考虑到百度地图用的比较熟悉了,所以考虑将高德坐标转换成百度坐标来做。
以下介绍部分的内容转载自:http://blog.csdn.net/yorling/article/details/9175913
但是,转换部分还是参考本文
总结:
WGS84坐标系:即地球坐标系,国际上通用的坐标系。
GCJ02坐标系:即火星坐标系,WGS84坐标系经加密后的坐标系。
BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系。
搜狗坐标系、图吧坐标系等,估计也是在GCJ02基础上加密而成的。
二、各个地图API采用的坐标系
API | 坐标系 |
百度地图API | 百度坐标 |
腾讯搜搜地图API | 火星坐标 |
搜狐搜狗地图API | 搜狗坐标* |
阿里云地图API | 火星坐标 |
图吧MapBar地图API | 图吧坐标 |
高德MapABC地图API | 火星坐标 |
灵图51ditu地图API | 火星坐标 |
======================================================================================
代码如下:
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.*;
import com.baidu.mapapi.map.*;
import com.baidu.mapapi.utils.*;
import com.baidu.mapapi.*;
import android.content.Context;
import android.app.Activity;
import android.content.Intent;
import com.baidu.platform.comapi.basestruct.GeoPoint;
public static JWD point_GCJ_conversion_bd09(JWD gcj)
{
JWD bd09 = new JWD();
GeoPoint googlePoint = new GeoPoint((int) (gcj.latitude * 1E6), (int) (gcj.longitude * 1E6));
GeoPoint bdPoint = CoordinateConvert.fromGcjToBaidu(googlePoint);
bd09.latitude = bdPoint.getLatitudeE6() / 1E6;
bd09.longitude = bdPoint.getLongitudeE6() / 1E6;
return bd09;
}
public static JWD point_GCJ_conversion_bd09(double lat, double lon)
{
JWD gcj = new JWD();
gcj.latitude = lat;
gcj.longitude = lon;
return point_GCJ_conversion_bd09(gcj);
}
class JWD
{
double latitude;
double longitude;
}