首页 / 浏览问题 / 移动GIS / 问题详情
android移动端,setMarkerSymbolID的问题
66EXP 2020年05月19日
这是我设置的点的风格,设置setMarkerSymbolID没变化呢?下面API看到的,没找到开发指南 SuperMap Objects 资源库,setMarkerSymbolID的参数需要怎么获取呢?

public GeoStyle getGeoStyle() {
    GeoStyle geoStyle_P = new GeoStyle();
    geoStyle_P.setMarkerAngle(50.0);
    geoStyle_P.setMarkerSize(new Size2D(100, 100));
    geoStyle_P.setMarkerSymbolID(180);

    return geoStyle_P;
}

**----------------------**

setMarkerSymbolID

public void setMarkerSymbolID(int value)

设置点状符号的编码。此编码用于唯一标识各点状符号。

点状符号可以用户自定义,也可以使用系统自带的符号库。使用系统自带符号库时,其相应的的编码参见开发指南 SuperMap Objects 资源库一览。

参数:

value - 点状符号的编码。

1个回答

您好,符号库是存在工作空间里面的或者通过代码导入符号库文件,请问一下您那边设置的ID180在您的符号库里面有这个ID吗?
1.通过工作空间workspace来获取资源库
2.如果有符号库文件可以通过SymbolLibrary.fromFile()加载符号库
9,127EXP 2020年05月19日
那我应该是没有符号库的,超图不是有自带的吗?我要怎么调用呢》
我们是有自带的符号库,但是需要你在桌面保存一个工作空间,然后把工作空间拷贝到设备上,用代码打开这个工作空间。通过工作空间workspace获取资源,workspace.getResource()。再通过资源去或者你需要的符号库资源。
那我怎么把符号库放到我的工作空间文件上呢?用超图9的软件吗

我们桌面有自带的符号库,如果您需要导入自己的符号可以在iDesktop桌面软件中导入该符号。符号库导入成功后可以直接保存工作空间或者把符号库导出来用一楼的方法进行加载。操作方法:

我把符号库一个图标导出为符号库文件,放到我的手机目录下了,然后用SymbolLibrary.fromFile()加载符号库,

symbolLibrary.fromFile()报空,我给了软件权限可以查本地了

你看一下返回的Boolean值是什么?参考一下我的代码:

Resources resources = m_workspace.getResources();
SymbolMarkerLibrary symbolMarkerLibrary = resources.getMarkerLibrary();
boolean isTure = symbolMarkerLibrary.fromFile(rootPath+"/SuperMap/MarkerLibrary.sym");

哦,我没把资源加上,加完后isTure为ture了,

geoStyle_P.setMarkerSymbolID(303);

我导出的id是303,为什么没有用呢?点击获取的点风格还是一个黑点

ID是不会变的,你那边看一下303这个ID在不在这个符号库里面。使用方法:
symbolMarkerLibrary.contains(303);还有我想问一下您那边是只用一个符号吗?为啥只导出一个符号而不是通过工作空间来获取
symbolMarkerLibrary.contains(303);返回ture。可我用到点风格上还没显示出来。  303需要定义一个类型,才能用吗?

我暂时只用了一个符号,不确定以后会不会增加,在超图9的软件上右键工作空间也没看到导入符号库的选项,按照你的图片操作也没在电脑上的文件夹找到工作空间的文件,我只是在找方法时看到哪个就用哪个方法了
我给你的截图是导入自定义符号的操作流程。如果有这个符号了,直接去设置风格就行。你代码怎么写的

在工作空间后导入库文件,在Draw类中调用点风格

点的风格用在这里

Point2D point2d = mapControl.getMap().pixelToMap(point);
GeoPoint geoPoint = new GeoPoint(point2d);
geoPoint.setStyle(mDraw.getGeoStyle());

直接导入符号库这个方法目前行不通,你那边使用打开工作空间然后去设置符号,这个是没有问题的。

没有导入符号库的选项啊?

你在桌面保存工作空间,然后把工作空间文件拷贝到设备上,用我上面的代码就可以实现

用我自己的工作空间就可以了吗?

对,工作空间里面是默认带符号库的

这里是空的,你那里返回的是什么?Road改用我的自己工作空间名称

symbolicDatasource.getDatasets().get("")

返回的也是null,是我缺了什么设置吗?应该是找不到Road

get(“Road”)是获取符号库吗?我怎么找到他呢
你那边看一下我的代码,这句代码是获取的数据集。按照我的代码对比帮助文档看一下思路
我把这段代码放在我新创建的数据集下面,symbolicDatasource.getDatasets().get("YoungerClassRegion")也是null,怎么都取不到数据。

//设置符号库资源
Datasource symbolicDatasource = workspace.getDatasources().get(0);
map.getLayers().add(symbolicDatasource.getDatasets().get("YoungerClassRegion"),true);
DatasetVector symbolicDatasetVector = (DatasetVector) symbolicDatasource.getDatasets().get("YoungerClassRegion");
Recordset symbolicRecordset = symbolicDatasetVector.getRecordset(false,CursorType.DYNAMIC);
数据集获取失败你看一下你创建的数据集名称是不是这个名称?你现在的问题是啥?设置符号风格的代码我在上面已经贴出来了,你看一下代码
Datasource symbolicDatasource = workspace.getDatasources().get(0);这句话是必须使用的吗?我把symbolicDatasource换成我自己创建数据集的名字获取不为空了,但符号风格设置还是没起作用
那句话是为了获取工作空间中的数据源,你的代码里面没有设置符号的风格的代码,设置符号风格:geostyle.setMarkerSymbolID()。你有没有看过我给你的代码?你得搞清楚每句代码的意思
有设置代码风格,没在那段代码下面而已,必须两段代码和在一起吗?
public GeoStyle getGeoStyle() {

    GeoStyle geoStyle_P = new GeoStyle();
    geoStyle_P.setMarkerSize(new Size2D(20, 20));
    geoStyle_P.setMarkerSymbolID(304);

    return geoStyle_P;
}
不一定要一起,你的工作空间里面有这个符号吗?我私信你我的联系方式。

这是我刚写的demo,数据源里有XZBJ这个图层数据集,为什么我get找不到呢?

数据集名称是XZBJ。不是你写的那样。
图标调出来了,谢谢
...