首页 / 浏览问题 / 移动GIS / 问题详情
android绘制的线的样式
sm
23EXP 2020年07月25日

如何让android绘制出的线具有方向,带箭头,或者其他能表现出线的绘制方向就行

像这样的都行

1个回答

您好,请问一下您那边是通过哪种方式来绘制的呢?
1.通过Action交互来绘制,可以先设置绘制的图层的图层风格,将图层风格设置为箭头符号。使用接口:layer.setAdditionalSetting(LayerSetting layerSetting);
2。通过构造线的方法将其添加到跟踪图层上,可以设置线的风格Geostyle.setLineSymbolID(int value)该参数是符号存在资源库里面的ID,符号库是存在工作空间里面的。您可以将工作空间拷贝到设备中,使用WorkspaceConnectionInfo打开该工作空间。这样您就可以使用工作空间中的符号了。符号ID可以在桌面软件中工作空间管理器--资源--线型符号库中查看。

9,232EXP 2020年07月27日
我现在使用的第二种方法,我没明白您可以将工作空间拷贝到设备中里的设备是什么意思,我是客户端,调用iserver服务,在地图上绘制线段时显示箭头方向,应该怎么办
调用iserver服务不能获取到符号,您需要在iDesktop桌面软件中保存一个工作空间, 然后在移动端去打开工作空间
GeoStyle geoStyle=new GeoStyle();
geoStyle.setLineColor(new com.supermap.data.Color(Color.parseColor("#4876FF")));
WorkspaceConnectionInfo w=new WorkspaceConnectionInfo();
w.setType(WorkspaceType.SXWU);
w.setServer("F:/iserver/samples/data_en/NetworkAnalyst/Changchun.sxwu");
workspace.open(w);
geoStyle.setMarkerSymbolID(38);

我打开工作空间后,然后geoStyle.setMarkerSymbolID(38);不行.应该怎么写?

工作空间能打开,怎么调用里面的符号?

打开工作空间默认就加载了符号库的,您直接在代码里面去设置geostyle就可以了。

geoStyle.setLineSymbolID()

现在代码可以打开这个工作空间

我绘线代码

GeoStyle geoStyle=new GeoStyle();
geoStyle.setLineColor(new com.supermap.data.Color(Color.parseColor("#4876FF")));
geoStyle.setLineSymbolID(39);
GeoLine geoLine=new GeoLine();
geoLine.addPart(point2Ds);
geoLine.setStyle(geoStyle);

我想用上面编号为39的箭头,我代码颜色可以显示,但是没有箭头,工作空间有点线图标没影响吧,

您那边使用Workspace.getResources().getLineLibrary().contains(39)方法看一下该工作空间是否存在这个ID的符号。
返回值为false
你在代码里面有打开你上面截图的工作空间吗?资源库是存在工作空间中的,必须要用代码打开该工作空间来获取里面的符号资源

我是获取到工作空间里的SXWU文件,添加到手机sd卡里,代码打开sd路径下的工作空间,返回true.请问一下是不是这样的?

您在idesktop桌面软件里面保存一个新的工作空间,工作空间格式为sxwu,桌面会默认生成几个符号文件,如lsl代表的就是线符号库,可以通过代码导入这个符号库文件。SymbolLibrary.fromFile(java.lang.String fileName),再去获取线符号

没有示例吗,越来越不懂了,

SymbolLibrary这个方法不知道该怎么用
没有范例的,SymbolLibrary是一个父类,可以使用他的子类来调用父类的接口。这样你就可以使用线型符号库类来加载库

我之前给你发了一个图片,也有我写的代码,图片里有lsl文件,我现在不知道下来该怎么写

你说的SymbolLibrary,我下面写的对不对,然后应该怎么办.能不能详细说一下,非常感谢

SymbolLibrary symbolLibrary=new SymbolFillLibrary();
symbolLibrary.fromFile("Changchun.lsl");

您好,导入符号库的代码为:m_workspace.getResources().getLineLibrary().fromFile(rootPath+"/SuperMap/dyx/LineLibrary.lsl");
设置线型风格的代码:
 

Point2Ds point2Ds = new Point2Ds();
point2Ds.add(new Point2D(114,36));
point2Ds.add(new Point2D(120,40));
GeoLine geoLine = new GeoLine(point2Ds);
GeoStyle geoStyle = new GeoStyle();
geoStyle.setLineSymbolID(39);
geoLine.setStyle(geoStyle);
m_mapcontrol.getMap().getTrackingLayer().add(geoLine,"gg");

非常感谢,可以了
还有一个问题,android客户端调用iserver服务,是直接调用还是通过客户端调用再返回服务端?那个更好?
...