首页 / 浏览问题 / 移动GIS / 问题详情
安卓绘制障碍区域
11EXP 2021年06月24日
安卓开发,现有一个障碍区域(可能不规则),请问如何在地图上绘制并显示为特定颜色?

现有一个方案如下:

1.通过GeoRegion得到一个区域对象

2.给GeoRegion对象添加GeoStyle并将其添加到追踪图层

请问此方案是否是最优方案?如若要绘制比较多的区域,会不会造成卡顿和加载慢呢?

1个回答

您好,绘制一个临时的障碍区域可以使用跟踪图层上进行显示。这种方式是比较优的方案,绘制的区域不会是成千上万个对象吧?
9,137EXP 2021年06月24日
额,可能会有几十上百个障碍区域,如果太多的话有其它的方案吗?
几十上百个可以使用跟踪图层。如果对象特别多并复杂可以将几何对象添加到一个面数据集中,将数据集添加到地图展示
好的,多谢
你好,请问如何删除跟踪图层上的某一个几何对象呢?trackingLayer.remove方法需要一个对象id,可是通过geoRegion.getId获取的是0,然后删除不掉
您好,这个id在添加的时候会返回一个int值,这个值就是该几何对象的id。如果不知道id也可以使用hitTest方法获取点击位置的几何对象的id。
trackingLayer.add(geoRegion,"geoRegion"),是这个方法的返回值吗?
嗯,对。你可以看下帮助文档,上面都是有介绍的
我看了,也试过了,用这个add方法的返回值也没用,trackingLayer.remove方法根据这个id,移除不掉跟踪图层上面的对象,只有一个clear方法可以移除,但是把所有的都移除了
调试一下代码看下remove方法返回的Boolean值是true还是false。然后remove刷新一下地图
trackingLayer.remove方法返回了true,但是刷新地图还是能看到这个几何对象的显示,怎么样在删掉了之后地图上面也不显示呢?
您那边使用的iMobile for Android版本是哪个版本呢,我这边验证一下
1012

我这边添加几何对象代码:

val geoRegion = GeoRegion(point2Ds)
geoRegion.style = geoStyle
id = m_mapcontrol!!.map.trackingLayer.add(geoRegion,name)

删除几何对象代码:

var remove = m_mapcontrol!!.map.trackingLayer.remove(id)
m_mapcontrol!!.map.refresh()
测试是可以正常移除的,但是如果图层中有多个对象,移除会有一些问题。你那边可以通过几何对象标签来移除,也就是添加到跟踪图层的第二个参数。
你好,removeLabel(name)方法也试过了,也是不行的,是什么原因呢?
您那边可以写一个能正常运行的小demo发我,用Java代码写的。我这边验证一下
好的,迟一点我再发给你
你好,请问demo我要怎么发给你呢?
联系方式私信您
好的,麻烦了
您好,您的邮箱我没法发送私信。您把demo发到这个邮箱:2889751134@qq.com
好的,已发送,请查收

文件名为:SMapApplication.zip

你好,请问无法删除某个图层的问题有解决方案吗?
您好,我这边邮件回复您了,使用你的demo可以用remove方法进行删除。removelable是移除标签不是移除跟踪图层的几何对象,所以目前只能通过remove方法进行移除
Java demo里面确实可以删除,但是我kotlin项目里还是删除不成功,但是remove方法的结果却是返回了true,只是地图界面上的图层还在,请问这可能是什么问题呢?
我这边验证一下看是否是kotlin环境导致的问题,你那边右键发我一个kotlin的demo吧。

你好,晚点发。现在又出现一个问题,场景就是当我使用

mapControl.getMap().getTrackingLayer().add(geoRegion,name)方法添加多个图层或者重复添加同一个图层的时候,然后用remove方法删除的时候就报错了,报了java.lang.IndexOutOfBoundsException: index
    索引号超出范围

请问这个问题要怎么解决呢?

我推测是add方法返回的id值是数字递增的,然后删除的时候是直接从list里面remove这个索引的

添加多个对象删除目前有问题,已经上报缺陷,解决后一并回复您
麻烦了,再多问一句,请问一下往跟踪图层添加GeoCircle圆形对象的时候,怎么创建GeoCircle呢,x,y坐标系的,如何生成圆的半径呢?
...