该问题已解决--请问有谁知道WGS84转墨卡托投影的算法吗?

本人想将经纬度转为墨卡托坐标,用于计算线的长度,不是在arcgis的平台上,而是在其他平台上,我网上搜了算法了,

代码如下:但是我根据Java代码的转换转为javascript的代码,但是问题是,转化的坐标结果,与根据arcgis api中的转换的方法比较起来,y坐标差异很大,x坐标一样,有谁知道比较好的算法吗?做好结果跟arcgis api转换的结果相似就可以了。
网上代码:
dvec3 CMathEngine::lonLat2WebMercator(dvec3  lonLat)
{
    dvec3  mercator;
    double x = lonLat.x *20037508.34/180;
    double y = log(tan((90+lonLat.y)*PI/360))/(PI/180);
    y = y *20037508.34/180;
    mercator.x = x;
    mercator.y = y;
    return mercator ;
}
//Web墨卡托转经纬度
dvec3 CMathEngine::WebMercator2lonLat( dvec3   mercator )
{
    dvec3 lonLat;
    double x = mercator.x/20037508.34*180;
    double y = mercator.y/20037508.34*180;
    y= 180/PI*(2*atan(exp(y*PI/180))-PI/2);
    lonLat.x = x;
    lonLat.y = y;
    return lonLat;
}
 
修改为js代码为:
function wgs84ToWercator(wgsLon,wgsLat)
{
   var x=wgsLon *20037508.342789/180;
   var y=Math.log(Math.tan((90+wgsLat)*Math.PI/360))/(Math.PI/180);
   y = y *20037508.34789/180;
   return {           
           "x":x,
           "y":y,
           "wkid":102100
         };
}
arcgis方法:webMercatorUtils.geographicToWebMercator(pt_wgs2);
但是两者计算两个点的长度也是有很大误差的,怎么办呢,难道要自己给他们校正吗,有什么好的方法呢?
 
 
解决办法就是通过(0,0)经纬度来对另一个坐标进行坐标进行校正,问题就解决了,哈哈,好开心!
 
 
已邀请:

要回复问题请先登录注册