我们在做gis项目的时候会经常遇到坐标转换的问题,我最近就是遇到客户要求无论输入什么坐标系的坐标都要能在天地图上定位,我查看了下js api发现GeometryService类有提供方法project
var point = new Point(parseFloat(x),parseFloat(y),new SpatialReference({wkid:parseInt(wkid)}));//这里面需要定义输入点的坐标系,不写默认会是4326
var PrjParams = new ProjectParameters();
PrjParams.geometries = [point];//几何类型数组,比如多个点可以批量转换
PrjParams.outSR = new SpatialReference({wkid: 4490});//需要输出的坐标系,4490代表是2000的地理坐标系,天地图就是这个坐标系
// PrjParams.transformForward = true;//是否向前转换
// PrjParams.transformation.wkid = 1188; //NAD_1983_To_WGS_1984_1,特别说明下,这里的wkid不是和坐标系的同一个意思,下面会贴出wkid对照表,还有这个值不填,代表是转换为地理坐标,如果写了,transformForward必须指明是向前转换还是向后。我转换成2000地理坐标系所以没填,会根据输出坐标系来。
geometryService.project(PrjParams, function (outputpoints) {
alert("经度:"+outputpoints[0].x+",纬度:"+ outputpoints[0].y);//返回的也是几何类型的数组,这里是点的数组
});
地理坐标wkid对照表:https://developers.arcgis.com/javascript/3/jshelp/gcs.html
投影坐标wkid对照表:https://developers.arcgis.com/javascript/3/jshelp/pcs.html
转换基准wkid对照表:http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#//02r3000000r8000000