arcgis runtime sdk for android 系列 - 如何添加一个要素服务下的所有图层

0
分享 2020-03-09
目的:

在安卓程序中添加一个要素服务下的所有图层。
 

实现步骤分解:
 
  1. 首先获取要素服务对应的地图服务的sublayer list;
  2. 然后遍历sublayer list 初始化所有的要素图层。

 
 
实现代码:
 
//获取sublayer list

String baseUrl = "http://sampleserver6.arcgisonl ... 3B%3B

mMapImageLayer = new ArcGISMapImageLayer(baseUrl + "MapServer");

mMapImageLayer.addLoadStatusChangedListener( new LoadStatusChangedListener() {
@Override
public void loadStatusChanged(LoadStatusChangedEvent loadStatusChangedEvent) {

if (mMapImageLayer.getLoadStatus() == LoadStatus.LOADED) {
ListenableList<ArcGISSublayer> sublayerList = mMapImageLayer.getSublayers();
loadFeatureServerLayers(sublayerList);
}

}
});
mMapImageLayer.loadAsync();

//根据上一步获取的图层列表,添加所有图层
private void loadFeatureServerLayers(ListenableList<ArcGISSublayer> sublayerList) {
try {
if (mMapView != null) {
for(int i=0; i<sublayerList.size(); i++) {
ServiceFeatureTable serviceFeatureTable = new ServiceFeatureTable(baseUrl + "FeatureServer/" + Integer.toString(i) );
FeatureLayer featureLayer = new FeatureLayer(serviceFeatureTable);
mMap.getOperationalLayers().add(featureLayer);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

1 个评论

您好,我尝试使用这种方式加载一个图层下的所以子图层,但是在显示范围较大时(比如:北京市全图展示)图层要素显示不全(大概显示了1/10不到,因数据涉密不方便截图),但是地图放大到一定范围就能正常显示了(数据显示级别没有对面要素进行限制并且使用ArcGis for Android10.2.9是能正常加载显示的)。
服务发布程序版本是ArcMap10.2和ArcGis Server10.2,Android端ArcGis SDK版本100.6.0,设备三星SM-T810\Android6.1 。

要回复文章请先登录注册