首页 / 浏览问题 / 其他 / 问题详情
js iclient获取拖拽元素所有的坐标出现问题
7EXP 2016年11月10日
问题描述:

我在拖拽事件里获取拖拽元素所有的坐标,所以坐标的x,y输出出来后发现获取的有问题

x,y坐标输出结果:115.96681,37.51906,115.96548,37.51578,115.96653,37.51126,115.98208374910999,37.51517293772901,115.98257374910999,37.51332293772901,115.98540374910999,37.513182937729006,115.98505374911,37.51522293772901,115.98208374910999,37.51517293772901,43621168,54095232,43620512,54094416,43618568,54095144,43620328,54096728,43621944,54096040,43621184,54095224,43621168,54095232,43591224,54104008,43590496,54103488,43591072,54103112,43592840,54104280,43591504,54105152,43589736,54104056,43590488,54103496,43591224,54104008

像前面的字符串中115.98208374910999,37.51517293772901的是正确的数据,但是从中间某段开始变成了43621168,54095232。我发现坐标数据里面,前面的数据都是7位或者8位数,小数点后面是5位,从大约第4个坐标开始小数点位数变成14位了。

我使用的代码描述:

function onLayerControlDragCompleteEvent(feature,pixel){
        var fea= feature;
        var position = pixel;
        console.log('onLayerControlDragCompleteEvent fea:'+ fea);
        //console.log('onLayerControlDragCompleteEvent position:'+ position);
       
     var layerfeatures = fea.layer['features'];
     var giscorrd = [];
    for(var i =0;i<layerfeatures.length;i++){
        var components = layerfeatures[i]['geometry']['components'];
        for(var j = 0;j<components.length;j++){
           /* if(j>0){
                giscorrd += ',';
            }*/
            //giscorrd += components[j].x+','+components[j].y;
            giscorrd.push(components[j].x);
            giscorrd.push(components[j].y);
        }
    }
console.log('giscorrd22233====='+giscorrd.join(','));

 }

请帮忙看下这块,是哪里出现了问题,谢谢。

2 个回答

我从浏览器里调试了,里面的变量和获取的是一样的;

imageimageimageimageimageimage

7EXP 2016年11月10日

你地图是不是用动态投影了? 看你后面43621168,54095232像墨卡托的投影 不是前面的84投影~

我应该没有用动态投影,我就是把山东天地图的WMTS服务引入到iserver上,然后对外发布了rest服务,最后用javascript for iclient 引用的。
转发Rest服务后,您那边对应的前端构建矢量元素是不是查询出来的。

如果是查询出来的,那么可以逐个排查对应矢量元素图层的坐标点集合。

如果不是查询出来的,自己动态构建的,那么问题就只能出现在构建点坐标上。
我查了下数据,发现那些不正常数据是因为拖拽或者编辑事件结束的时候,获取的不仅仅是当前编辑的图形的数据,而是把所有的图形的坐标都取到了。那些不正常数据是我随便编的。怎么获取当前正在编辑的图形的坐标呀?

你代码中 var fea= feature;
就能获取到你拖动的feature,
然后在得到其属性,例如我下图所示的点拖动,

在深入点可以根据ID的类型 来判断究竟拖动的是什么

Polygon? Point ?LineString ?等等

多谢了,是我获取的不对,直接获取feature就取到了。
不客气,有问题在提问。。
你可以在浏览器开发者工具里面,在该函数里打断点。看下传进去的矢量要素featuer是什么样的,几何对象的数组的节点的坐标是不是和你输出的一样
1,620EXP 2016年11月10日
...