前言
本文使用的是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 在国内使用的很少,在网上能找到的中文资料不多,开发难度还是有点大的,上文的不足甚至错误的地方希望各位能指出。