首页 / 浏览问题 / 移动GIS / 问题详情
添加动态图层后,绿色的图标显示了两个,没找到原因
66EXP 2020年04月28日

用的是gps定位

1个回答

您好,您通过DynamicPoint动态层点对象的setPoint()方法来添加点,而不是使用DynamicElement.addPoint()方法。参考代码如dynamicPoint.setPoint(new Point2D());
DynamicView.addElement(dynamicPoint);
9,127EXP 2020年04月28日

谢谢,这个问题我已经解决了,请教一个问题,添加天地图影像后,不显示是因为什么,地图一片空白的状态

您好,首先调试一下代码看数据源是否打开成功?设置的token是否正确,我这个token是可以正常打开显示的,可以试一下这个token:

58ac8e6ae418fcf77eece945a3ec4feb
用了这个token,手机界面还是空白的
我的代码有问题吗?,新手,刚接触不是很懂这个

这是调用地图的代码

您好,您那边调试一下代码看一下返回的datasource是否为空

谢谢,解决了,断点datasource提示数据库别名被占用,改了个名字就好了,谢谢,不过我有产生个问题,同一个项目的

DatasourceConnectionInfo名称不能用同一个吗?
不能哈,同一个工作空间必须是不同的名称

谢谢啊,网上没怎么找到办法,攒了几个问题,还需要问您一个问题,麻烦您了。我在调用天地图后面加上这段话,测试点查面功能,天地图就变成空白的界面了,是因为图层覆盖了吗?可我添加图层之后地图正常显示,加上这段获取图层名称的代码就使地图空白了

我看您的代码您这是又重新去打开地图了吗?重新打开地图之前的地图就没了
哪句话是重新打开地图啊,我没想重新打开,只是想获取加载图层数据后,获取图层的名字
我在你注释的代码里面看到map.open的方法,这个是打开地图的方法
哦,我在注释这段代码上面创建过一个map方法了,直接在这里调用会造成数据库别名被占用崩溃的情况。所以我就又创建了一个m_map方法,就没有崩溃的问题了,但是会出现地图空白,你说的打开地图去掉的话,会造成数据库别名被占用崩溃,这段代码是在网上找的一个例子
你弄一个全局变量就可以了,不需要去重新创建map对象。
map是全局变量,
我的意思你有map过后,就不需要再使用map.open的方法再打开地图了,直接通过map.getLayers()方法来获取图层对象

这么写datasource会提示数据库别名被占用,崩溃,我改成别的名字了,也不行

数据源别名被占用的话修改一下数据源别名。datasourceConnectionInfo.setAlias(),然后检查一下你的代码还有没有其他地方使用到了打开数据源的方法。我看你的判断条件是打开工作空间就获取图层名称对应的图层,请问一下你打开工作空间有打开地图吗?

有的,有打开,mapPath是地图文件,.smwu类型的,这是在调用天地图之前写的

不是你这只是打开工作空间,没有打开地图的,我给你说一下流程:
1.打开工作空间
2.打开工作空间中已有的地图,然后通过数据源连接参数打开天地图
3.获取图层

我的代码现在流程是

1.打开工作空间

2.导入.shp图层文件

3.打开天地图

4.获取导入的图层的名称为点查面的数据做准备

(在第四步时,就会出现数据源别名被占用问题,改了别名也会崩溃;但是把第四步注掉,数据库别名就不报错了,我没明白这里有什么关联)

代码我改成这样子了,把open去掉了

//测试点查面
if (workspace.open(info)) {
    demoMianLayerRegion = map.getLayers().get("XZBJ@LinYeYHSY");
    countyLayerRegion = map.getLayers().get("county@LinYeYHSY");
    townLayerRegion = map.getLayers().get("town@LinYeYHSY");
    villageLayerRegion = map.getLayers().get("village@LinYeYHSY");
    ForestStandLayerRegion = map.getLayers().get("ForestStand@LinYeYHSY");
    OriginLayerRegion = map.getLayers().get("Origin@LinYeYHSY");
    YoungerClassLayerRegion = map.getLayers().get("YoungerClass@LinYeYHSY");
}
你第四步不需要在重新打开工作空间了,打开过一次就可以了。
workspace.open(info)这个不是判断布尔值吗?  workspace.open和map.open一样是打开地图的功能吗?用一次就可以了,是这么理解吧,我把判断去掉后,不报错了
你这个是又打开一遍,如果你要判断布尔值,你可以在写一个布尔值的全局变量。然后在打开工作空间的时候返回这个变量,第四步直接判断改布尔变量,而不是打开工作空间
哦,明白了,谢谢啊,麻烦您了
...