首页 / 浏览问题 / 移动GIS / 问题详情
iMobile Android二维地图查询出来之后不能改变颜色
122EXP 2019年08月30日

使用产品:SuperMap iMobile 9D(2019)(V9.1.2)SuperMap iMobile 9D(2019) SP2 for Android(精简绿色包) 操作系统:win10 x64

数据类型: 文件型

问题详细描述:iMobile Android二维地图查询出来之后不能改变颜色。参考的例子\SampleCode\BoundsQuery,设置颜色不管用 然后所有数据都加上了绿色的线。

GeoStyle geoStyle_L = new GeoStyle();
geoStyle_L.setLineColor(new Color(0,0,255));
geoStyle_L.setLineSymbolID(15);
geoStyle_L.setLineWidth(500.0);
Point2Ds point2Ds = new Point2Ds();
Point2D[] point2DArray = {new Point2D(geometry.getPart(0).getItem(0).getX(), geometry.getPart(0).getItem(0).getY()), new Point2D(geometry.getPart(0).getItem(1).getX(), geometry.getPart(0).getItem(1).getY())};
point2Ds.addRange(point2DArray);
GeoLine geoLine = new GeoLine(point2Ds);
geoLine.setStyle(geoStyle_L);

1个回答

您好,能否详细说一些您那边的需求呢?您是想设置查询结果对象的颜色吗?设置查询结果颜色方法:通过查询返回的记录集recordset,然后将其转换为选择集selection,最后再设置选择集的风格,selection.setStyle();
9,232EXP 2019年08月30日
怎么转换为selection,recordset是有值的 selection是nul
转换方法:selection.fronRecordset()
layer.getSelection().fromRecordset(recordset);设置报错了

 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.supermap.mapping.Selection.fromRecordset(com.supermap.data.Recordset)' on a null object reference
                                                                at com.zkyx.map.MainFrame$queryBtnlistener.onClick(MainFrame.java:424)
                                                                at android.view.View.performClick(View.java:6668)

您好,调试一下您的代码,recordset是否为空?
Toast.makeText(MainFrame.this, "Count"+recordset.getRecordCount(), Toast.LENGTH_LONG).show();

Count=99 不为空

您使用的layer、recordset、datasetVector是同一个数据集吗?
应该是一个数据集 不同的就是 例子直接获取的
DatasetVector datasetvector = (DatasetVector)layer.getDataset();

我是这样获取的 :

Datasource datasource = m_woWorkspace.getDatasources().get(0);

Dataset dataset0 = datasource.getDatasets().get("PL_WS");

DatasetVector datasetvector = (DatasetVector)dataset0;

完整代码如下:


          Layer layer = null;

        
            layer = m_mapControl.getMap().getLayers().get("PL_WS");
         
         Datasource datasource = m_woWorkspace.getDatasources().get(0);
         Dataset dataset0 = datasource.getDatasets().get("PL_WS");
         DatasetVector datasetvector = (DatasetVector)dataset0;

          m_mapControl.getMap().getLayers().add(datasetvector, true);
         // 清空选择集
         for (int i = 0; i < m_mapControl.getMap().getLayers().getCount(); i++) {
            Layer ly = m_mapControl.getMap().getLayers().get(i);
            if (ly.getSelection()!=null){
               ly.getSelection().clear();
            }
         }
         Recordset recordset = queryParameterTest(datasetvector);
您的图层layer获取值了吗?添加数据集到图层的代码是在获取之后,这样layer是为空的啊。示范demo里面也是先把地图加载成功了,再获取的图层。可以参考一下示范demo BoundsQuery

layer肯定没问题 肯定加载成功了 99条我都查出来了

layer = m_mapControl.getMap().getLayers().get("PL_WS");这句不是吗?
您好,能否把你的完整代码贴出来呢?联系方式已私信您。
我加你qq了 咋不同意啊
您好,我这边没有收到您的qq申请,麻烦您重新添加一下或者你私信我您的联系方式
...