ArcGIS For Android 在地图上显示属性图形信息和属性文本信息

我的肥仔

前言

本文使用的是10.2.8的版本。需求是要在切片地图上显示出自定义的村镇界线,森林地块的树种信息等信息。

方法一:

第一种就是利用Symbol类中的TextSymbol来显示,使用的是.shp文件。


TextSymbol textSymbol = new TextSymbol(textSize,labelTag,Color.parseColor(textColor));
textSymbol.setFontFamily("DroidSansFallback.ttf");
Graphic textGraphic = new Graphic(point, textSymbol);
graphicsLayer.addGraphic(textGraphic);

point即是直接读取要素的中心点(亦或是重心点),让文本信息直接显示在地块上面。需要注意将文本的格式设置为DroidSansFallback.ttf。

在ArcGIS默认的文本格式是不兼容Android的文本库的。这种方法只能去显示固定的值,并且通过这种画的方法来显示文本速度是很慢的。对于需要频繁移动地图的操作者来说,卡顿很明显,体验很差。

另外在ArcGIS提供的API中想要获取SHP文件中的Feature对象是很不方便的,需要去查询,因此即时获取它的属性信息就很困难。


方法二:

第二种是利用.geodatabase 文件来显示信息。


Geodatabase geodatabase = new Geodatabase(PathConfig.KB_URL);
List geoDatabaseTables =geodatabase.getGeodatabaseTables();
for (GeodatabaseFeatureTable geoDatabaseTable : geoDatabaseTables) {
    FeatureLayer layer = new FeatureLayer(geoDatabaseTable);
    mMapView.addLayer(layer);
}

PathConfig.KB_URL:.geodatabase文件的存放路径。

这方法是文本,图形的绘制属性都在.geodatabase文件内部,android代码中不需要处理了,利用这种方法显示信息速度十分快,在大量数据的情况下也能比较流畅。

效果图:
这里写图片描述

如果要修改显示的样式,无法在Android中修改,需要去修改.geodatabase文件中的字段,本人是利用火狐浏览器中的SQLiteManeger插件来修改字段的。

修改的字段在表GDB_ServiceItems中,字段是AdvancedDrawingInfo。

因此这种方法的数据是较固定、难修改的,只能依靠替换.geodatabase文件来更新数据。适合显示一些稳定的信息,例如乡镇地界等。

ArcGIS for Android 在国内使用的很少,在网上能找到的中文资料不多,开发难度还是有点大的,上文的不足甚至错误的地方希望各位能指出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容