chncrs.js
function (gcjLon, gcjLat) {
        var initDelta = 0.01;
        var threshold = 0.000000001;
        var dLat = initDelta, dLon = initDelta;
        var mLat = gcjLat - dLat, mLon = gcjLon - dLon;
        var pLat = gcjLat + dLat, pLon = gcjLon + dLon;
        var wgsLat, wgsLon, i = 0;
        while (1) {
            wgsLat = (mLat + pLat) / 2;
            wgsLon = (mLon + pLon) / 2;
            var tmp = this.gcj_encrypt(wgsLat, wgsLon)
            dLat = tmp.lat - gcjLat;
            dLon = tmp.lon - gcjLon;
            if ((Math.abs(dLat) < threshold) && (Math.abs(dLon) < threshold))
                break;

            if (dLat > 0) pLat = wgsLat; else mLat = wgsLat;
            if (dLon > 0) pLon = wgsLon; else mLon = wgsLon;

            if (++i > 10000) break;
        }
        return [wgsLon, wgsLat];
    }
function (gcjLon, gcjLat) {
        var initDelta = 0.01;
        var threshold = 0.000000001;
        var dLat = initDelta, dLon = initDelta;
        var mLat = gcjLat - dLat, mLon = gcjLon - dLon;
        var pLat = gcjLat + dLat, pLon = gcjLon + dLon;
        var wgsLat, wgsLon, i = 0;
        while (1) {
            wgsLat = (mLat + pLat) / 2;
            wgsLon = (mLon + pLon) / 2;
            var tmp = this.gcj_encrypt(wgsLat, wgsLon)
            dLat = tmp.lat - gcjLat;
            dLon = tmp.lon - gcjLon;
            if ((Math.abs(dLat) < threshold) && (Math.abs(dLon) < threshold))
                break;

            if (dLat > 0) pLat = wgsLat; else mLat = wgsLat;
            if (dLon > 0) pLon = wgsLon; else mLon = wgsLon;

            if (++i > 10000) break;
        }
        return [wgsLon, wgsLat];
    }
function ( gcjLon , gcjLat ) { var initDelta = 0.01 ; var threshold = 0.000000001 ; var dLat = initDelta , dLon = initDelta ; var mLat = gcjLat - dLat , mLon = gcjLon - dLon ; var pLat = gcjLat + dLat , pLon = gcjLon + dLon ; var wgsLat , wgsLon , i = 0 ; while ( 1 ) { wgsLat = ( mLat + pLat ) / 2 ; wgsLon = ( mLon + pLon ) / 2 ; var tmp = this . gcj_encrypt ( wgsLat , wgsLon ) dLat = tmp . lat - gcjLat ; dLon = tmp . lon - gcjLon ; if ( ( Math . abs ( dLat ) < threshold ) && ( Math . abs ( dLon ) < threshold ) ) break ; if ( dLat > 0 ) pLat = wgsLat ; else mLat = wgsLat ; if ( dLon > 0 ) pLon = wgsLon ; else mLon = wgsLon ; if ( ++ i > 10000 ) break ; } return [ wgsLon , wgsLat ] ; }
GCJ-02 to WGS-84 exactly
GCJ - 02 to WGS - 84 exactly