首页 / 浏览问题 / 移动GIS / 问题详情
android 天地图跟踪层选择面对象
30EXP 2021年11月29日

我的地图使用的在线天地图,然后根据一些经纬度集合在跟踪层添加了一些面对象,设置

Action.SELECT后选择添加的面对象,没有反应,请问这是什么原因?

跟踪层添加面对象:

m_mapControl.getMap().getTrackingLayer().add(geoRegion, "geoRegion");
m_mapControl.getMap().refresh();

选择模式:

m_mapControl.setAction(Action.SELECT);

1个回答

您好,跟踪图层不支持通过Action来选择,action是针对普通图层的。跟踪图层只能通过trackingLayer.hitTest()来判断是否选择
9,127EXP 2021年11月29日
通过trackingLayer.hitTest()来判断是否选择,那通过什么来监听事件?ontouch?
是的,通过ontouch或者手势识别监听事件

好的,谢谢,这个问题已经解决。

再就是,我向跟踪图层创建新的字段,然后根据id往这个字段设置值,不成功,请问一下这是什么原因?

//向当前跟踪图层中创建字段类型为String型的用户字段信息。
 m_mapControl.getMap().getTrackingLayer().createUserFieldString(
        "geoInfo", 10, 0);

这里返回的值表示创建成功了.

//向当前跟踪图层中添加一个几何对象
int id = m_mapControl.getMap().getTrackingLayer().add(geoRegion, "geoRegion_" + feature.id);

//设置此跟踪图层指定记录的指定字段的String类型的值

m_mapControl.getMap().getTrackingLayer().setFieldStringEx(
        "geoInfo", "geoInfo_" + id, id)

这里返回false,显示设置字段值失败

测试可以正常添加呢,您那边看下跟踪图层的几何对象是否添加成功。
 

m_Map.getTrackingLayer().createUserFieldString("tets",10,0);
int ttt = m_Map.getTrackingLayer().add(geoRegion, "ttt");
boolean b = m_Map.getTrackingLayer().setFieldStringEx("tets", "ssss", ttt);
Log.i("============",m_Map.getTrackingLayer().getFieldString(ttt,"tets"));

跟踪图层的几何对象肯定是添加成功了,是否是我这边实时渲染的作用?

我为了性能考虑,在添加对象之前关闭了实时渲染

//设置实时渲染

m_mapControl.getMap().getTrackingLayer().setAsyncRefresh(false);

在对象添加完成后,批量刷新

//对跟踪图层进行批量更新。
m_mapControl.getMap().getTrackingLayer().flushBulkEdit();

加上也是没有问题的哈,我使用的版本是iMobile for Android 10.2.0
我使用的也是1020,你们的最新版,可是确实我这边设置值返回false,然后再选择的时候去获取值,

得到是空字符串
看下是否开启OpenGL?我这边没有重现你的问题,你可以写个能够重现的demo发我。
好的,那我私信给你链接
你好,私信demo已发,请查收
你好,demo收到了吧?
已经测试了哈,你设置的字段值不要有特殊字符".",我测试可以新建字段值了
哦哦,是的,去掉这个就行了,

字段值对特殊字符还有要求啊,具体除了这个特殊字符"."还有什么其他的要求吗?json格式可以吗?
最好不使用json格式哈
好的,谢谢回复,目前看来除了字符"."以外都行。
...