AJS3.X和4.X 的toScreen()方法不一样吗?

3.X toScreen(地理坐标) 可以得到正确屏幕坐标
4.X toScreen(投影坐标) 才可以得到正确屏幕坐标
代码如下:

/**
* 经纬度转换为屏幕像素
*
* @param {Array.<number>} geoCoord 经纬度
* @return {Array.<number>}
* @public
*/
self.geoCoord2Pixel = function(geoCoord) {
   var point = new Point(geoCoord[0], geoCoord[1]);
   var pos;
// 关键代码 导致绘制不正确的原因是坐标系转屏幕坐标问题
if(point.spatialReference.isGeographic=true){
   var mercator_point = self.lonlat2mercator(point);
   pos = self._map.toScreen(mercator_point);
}
else{
   pos = self._map.toScreen(point);
}
return [pos.x, pos.y];
};
/**
* 新增方法 将经纬度坐标转换为投影坐标
*/
self.lonlat2mercator = function lonlat2mercator(lonlat) {
   var mercator = {
   x: 0,
   y: 0
};
    var x = lonlat.x * 20037508.34 / 180;
    var y = Math.log(Math.tan((90 + lonlat.y) * Math.PI / 360)) / (Math.PI / 180);
    y = y * 20037508.34 / 180;
    mercator.x = x;
    mercator.y = y;
return mercator;
};
//在使用3.x时不需要进行转换就可以得到正确结果,求高手指点
已邀请:

要回复问题请先登录注册