docs: 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];
      }