const double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
//高德用的是火星坐标系
#pragma mark-火星坐标系 (GCJ-02)转与百度坐标系 (BD-09) 的转换算法
-(CLLocationCoordinate2D)returnBDPoi:(CLLocationCoordinate2D)PoiLocation
{
float
x=PoiLocation.longitude;
float
y=PoiLocation.latitude;
float
z=sqrtf(x*x+y*y)-0.00002*sinf(y*x_pi);
float theta
= atan2(y, x) + 0.000003 *cos(x * x_pi);
CLLocationCoordinate2D BDpoi=
CLLocationCoordinate2DMake( z * sin(theta) + 0.006,z * cos(theta) +
0.0065);
return
BDpoi;
}
#pragma mark-(BD-09) 百度坐标系转火星坐标系 (GCJ-02) 的转换算法
-(CLLocationCoordinate2D)returnGCJPoi:(CLLocationCoordinate2D)PoiLocation
{
float x =
PoiLocation.longitude - 0.0065, y = PoiLocation.latitude -
0.006;
float z =
sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);
float theta
= atan2(y, x) - 0.000003 * cos(x * x_pi);
CLLocationCoordinate2D GCJpoi=
CLLocationCoordinate2DMake( z * sin(theta),z * cos(theta));
return
GCJpoi;
}