首页 / 浏览问题 / 移动GIS / 问题详情
移动端如何对iServer地图服务进行几何对象编辑?
6EXP 2020年12月03日
使用产品:SuperMap iMobile 10i SP1 for Android

操作系统:win7 x64

问题详细描述:

董工你好,有几个关于手机端编辑几何对象的问题请教下:

1、请问是否只能在矢量图层上才能实现几何对象的编辑?

2、使用iServer发布的地图服务是否可以完成几个对象编辑的操作,还是说只能通过数据服务进行编辑?

3、如果我仅使用iServer发布的地图服务中的地图作为底图,通过其他渠道获取到几何对象的数据,是否可以在底图上直接编辑并与服务端实现上传、下载功能?

问题有点多,麻烦董工介绍下,不胜感激!
问题关闭原因: 已解决

1个回答

您好,1.几何对象编辑主要针对的是矢量图层,如果您想在没有矢量图层中进行编辑,只能是通过构造方法构造几何对象在跟踪图层上显示
2.地图服务不能对几何对象进行编辑,可以对数据服务进行编辑,实现思路为将数据下载到本地,修改完后更新到服务上,可以参考知识库--服务对接
3.跟第二个一样,服务编辑是针对数据服务的
9,127EXP 2020年12月03日
这个坐标是投影坐标系的,可以使用坐标点转换将其转换为地理坐标系。转换接口:CoordSysTranslator。具体方法你看下帮助文档接口介绍

董工,我通过以下代码将一个给定的地理坐标转(113.607931, 34.722896)换为投影坐标,但是结果(55683.71958786496,3844019.800383338)应该误差很大,请问是什么原因导致?

Point2Ds point2Ds2 = new Point2Ds();
Point2D point2D2 = new Point2D(113.607931, 34.722896);
point2Ds2.add(point2D2);

PrjCoordSys prjCoordSys = new PrjCoordSys();
Projection projection = new Projection();
projection.setType(ProjectionType.PRJ_GAUSS_KRUGER);
prjCoordSys.setProjection(projection);
PrjParameter prjParameter = new PrjParameter();
prjParameter.setCentralMeridian(113);
prjParameter.setStandardParallel1(0);
prjCoordSys.setPrjParameter(prjParameter);
boolean isSucess = CoordSysTranslator.forward(point2Ds2, prjCoordSys);
Point2D point2d = point2Ds2.getItem(0);

董工您好,我通过以下代码将一个给定的地理坐标转(113.607931, 34.722896)换为投影坐标,但是结果(55683.71958786496,3844019.800383338)应该误差很大,请问是什么原因导致,能指正下吗?谢谢!

Point2Ds point2Ds2 = new Point2Ds();
Point2D point2D2 = new Point2D(113.607931, 34.722896);
point2Ds2.add(point2D2);

PrjCoordSys prjCoordSys = new PrjCoordSys();
Projection projection = new Projection();
projection.setType(ProjectionType.PRJ_GAUSS_KRUGER);
prjCoordSys.setProjection(projection);
PrjParameter prjParameter = new PrjParameter();
prjParameter.setCentralMeridian(113);
prjParameter.setStandardParallel1(0);
prjCoordSys.setPrjParameter(prjParameter);
boolean isSucess = CoordSysTranslator.forward(point2Ds2, prjCoordSys);
Point2D point2d = point2Ds2.getItem(0);

您那边检查一下您设置的投影坐标系参数是否是正确的,我这边使用墨卡托投影的坐标系进行转换是没有问题的。
 

Point2Ds point2Ds2 = new Point2Ds();
Point2D point2D2 = new Point2D(113.607931, 34.722896);
point2Ds2.add(point2D2);
PrjCoordSys prjCoordSys = new PrjCoordSys(PrjCoordSysType.PCS_SPHERE_MERCATOR);
boolean isTrue = CoordSysTranslator.forward(point2Ds2,prjCoordSys);
谢谢董工,应该是投影坐标系选择的问题,使用墨卡托投影之后可以获取到有效数据
...