如何将百度地图的坐标经纬度转换成GPS坐标
澳门威尼斯人官网
澳门威尼斯人官网
当前位置 : 澳门威尼斯人官网 > 威尼斯人线上娱乐官网

如何将百度地图的坐标经纬度转换成GPS坐标

如题 请教大神 如何将百度地图的经纬度转成真实经纬度。百度API只提供其他经纬度转换成百度经纬度。

我之前在Android上用的java版的,给你转成swift了,跑了一下应该没啥问题。
先用第一个函数,将百度坐标转成火星坐标,再用第二个,将火星坐标转成WGS84坐标,也就是真实坐标了。

let PI = 3.1415926535897932384626;
let A = 6378245.0;
let EE = 0.00669342162296594323;

//: Change BD-09 to Gcj-02
func bd09_to_gcj02latitude lat:Double, longitude lon:Double -> lat:Double, lon:Double
{
    let x: Double = lon - 0.0065;
    let y: Double = lat - 0.006;
    let z: Double = sqrtx * x + y * y - 0.00002 * siny * PI;
    let theta: Double = atan2y, x - 0.000003 * cosx * PI;
    return z * sintheta, z * costheta;
}

//: Change Gcj-02 to WGS-84
func gcj02_to_wgs84latitude lat:Double, longitude lon:Double -> lat:Double, lon:Double
{
    let wgs84_pos: lat: Double, lon: Double = tranlatitude: lat, longitude: lon;
    let gcj02_lon: Double = lon * 2 - wgs84_pos.lon;
    let gcj02_lat: Double = lat * 2 - wgs84_pos.lat;
    return gcj02_lat, gcj02_lon;
}

//: Private func
private func tranlatitude lat:Double, longitude lon:Double -> lat:Double, lon:Double
{
    var dLat: Double = transformLatlon - 105.0, y: lat - 35.0;
    var dLon: Double = transformLonlon - 105.0, y: lat - 35.0;
    let radLat: Double = lat / 180.0 * PI;
    var magic: Double = sinradLat;
    magic = 1 - EE * magic * magic;
    let sqrtMagic: Double = sqrtmagic;
    dLat = dLat * 180.0 / A * 1 - EE / magic * sqrtMagic * PI;
    dLon = dLon * 180.0 / A / sqrtMagic * cosradLat * PI;
    let mgLat: Double = lat + dLat;
    let mgLon: Double = lon + dLon;
    return mgLat, mgLon;
}

private func transformLatx: Double, y: Double -> Double
{
    var ret: Double = -100.0 + 2.0 * x + 3.0 * y;
    ret += 0.2 * y * y + 0.1 * x * y;
    ret += 0.2 * sqrtabsx;
    ret += 20.0 * sin6.0 * x * PI + 20.0 * sin2.0 * x * PI * 2.0 / 3.0;
    ret += 20.0 * siny * PI + 40.0 * siny / 3.0 * PI * 2.0 / 3.0;
    ret += 160.0 * siny / 12.0 * PI + 320 * siny * PI / 30.0 * 2.0 / 3.0;
    return ret;
}


private func transformLonx: Double, y: Double -> Double
{
    var ret: Double = 300.0 + x + 2.0 * y;
    ret += 0.1 * x * x + 0.1 * x * y;
    ret += 0.1 * sqrtabsx;
    ret += 20.0 * sin6.0 * x * PI + 20.0 * sin2.0 * x * PI * 2.0 / 3.0;
    ret += 20.0 * sinx * PI + 40.0 * sinx / 3.0 * PI * 2.0 / 3.0;
    ret += 150.0 * sinx / 12.0 * PI + 300.0 * sinx / 30.0 * PI * 2.0 / 3.0;
    return ret;
}

前端时间写了一个js版本的常用互联网坐标转换,正好对应你的这个问题,另外GPS坐标是WGS84坐标,http://wandergis.github.io/coordtransform/ github今天挂了,只能给你这个了,你可以使用npm下载使用,还提供了一个python版本的 你可以去看看,刚刚发现你是在ios下提问的,源码是开源的 你可以参照修改成objectivec的代码或者swift的

百度坐标貌似是火星坐标再修正了一次,有百度坐标转火星坐标的,也有火星坐标转地球坐标的,这类你可以去github上 或者百度下就有的。
话说 你都用了百度地图了,为啥还要知道真正的地球坐标。

百度地图有接口可以转换的,你可以查一下百度地图的API

广告位

澳门威尼斯人官网