百度地图与高德地图坐标互换

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;
}          

你可能感兴趣的:(百度地图与高德地图坐标互换)