首页 / 浏览问题 / 移动GIS / 问题详情
android端如何在CAD图层上添加文字标注
9EXP 2022年04月21日

使用产品:imobile 10.2.1-228
问题描述:我按照addLable 那个demo里的代码添加GeoText到CAD数据集中,最终样式和位置没有生效,会固定显示在0,0坐标上
期望:我不想只是添加到跟踪层显示,而是要保存进数据集里,需要指定坐标位置;我不知道哪里用错了,请帮忙解答下

recordset.moveFirst();
               GeoText geoText = new GeoText();
               TextPart textPart = new TextPart();
               textPart.setText(textStickerView.getText());

               textPart.setRotation(-textStickerView.getRotateAngle());
               Point2D point2D = mapControl.getMap().pixelToMap(textStickerView.getpoint());
               textPart.setAnchorPoint(point2D);
               geoText.addPart(textPart);
               //设置风格
               TextStyle textStyle = new TextStyle();
               textStyle.setForeColor(new com.supermap.data.Color(textStickerView.getTextColor()));
               textStyle.setAlignment(TextAlignment.MIDDLECENTER);
               textStyle.setFontHeight(textStickerView.getTextHeight());
               textStyle.setSizeFixed(true);

               geoText.setTextStyle(textStyle);

               recordset.addNew(geoText);

问题关闭原因: 已解决

2 个回答

您好,根据您提供的信息来看,建议您将geoText.addPart(textPart)移到geoText.setTextStyle(textStyle)的上一句
3,660EXP 2022年04月21日
谢谢回复,不过我没太明白,是addPart在前setTextStyle在后的意思么,目前代码就是这样,会显示在经纬度为0的坐标位置
您可以打印下获取到屏幕上点的坐标以及屏幕上点转为地图坐标点后的坐标,观察一下是在哪里坐标没有转好
geo text:测试文本 { "id" : 18, "center" :{ "x" :108.77923816701332, "y" : 30.794268329241795}, "style" :null, "parts": [], "type": "TEXT", "points" :[{ "x" :108.77923816701332,"y" :30.794268329241795}], "texts" :[测试文本]}
geo text:测试文本 { "id" : 22, "center" :{ "x" :126.83614944133075, "y" : 58.41890715738833}, "style" :null, "parts": [], "type": "TEXT", "points" :[{ "x" :126.83614944133075,"y" :58.41890715738833}], "texts" :[测试文本]}
geo text:测试文本 { "id" : 22, "center" :{ "x" :126.83614944133075, "y" : 58.41890715738833}, "style" :null, "parts": [], "type": "TEXT", "points" :[{ "x" :126.83614944133075,"y" :58.41890715738833}], "texts" :[测试文本]}

坐标正常,不知道到底哪儿出了问题,标绘这些位置正常

有进一步信息了,它是按投影坐标摆放的,怎么改来直接用经纬度呢,我的CAD数据集是新建的

DatasetVectorInfo vectorInfo = new DatasetVectorInfo();
         vectorInfo.setType(DatasetType.CAD);
         vectorInfo.setEncodeType(EncodeType.NONE);

         boolean containDataset = datasets.contains(datasetName);
         Dataset dataset = datasets.get(datasetName);
         if (!containDataset) {
            dataset = datasets.create(vectorInfo);
         }
         layer = layers.add(dataset, true);
         layer.setCaption(datasetName);

您可以使用prjcoordsys里面的方法转换坐标
出现这个问题是因为坐标没有进行转换,可手动转换

但最简单的是在创建数据集时设置上坐标系行了,问题已解决,谢谢解答
9EXP 2022年04月22日
...