1、上一章讲了arcgis for android 入门与提高(七)加载服务arcgis for android 入门与提高(七)加载arcgis server服务_郝大大的博客-CSDN博客,介绍了三种加载服务图层的方式,这节讲如何加载各类数据。
2、shape数据是最常用的数据,arcgis for android提供了提别方便的接口供我们使用,当然这个接口的权限是最高的,所以只能在开发者模式中使用。
首先我们要获取Android读取文件的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.
permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
把数据拷贝到设备中,设置导入数据的路径,Environment.getExternalStorageDirectory()是根目录:
String shapeFile = Environment.getExternalStorageDirectory() + "/test.shp";
3、默认的显示效果是黑色的,我们需要给它一个颜色渲染SimpleRenderer ,点、线、面符号颜色、大小用SimpleMarkerSymbol、SimpleLineSymbol、SimpleFillSymbol表示,核心代码:
private void importShape(String shapeFile) {
ShapefileFeatureTable shapefileFeatureTable = new ShapefileFeatureTable(shapeFile);
FeatureLayer featureLayer = new FeatureLayer(shapefileFeatureTable);
mMapView.getMap().getOperationalLayers().add(featureLayer);
shapefileFeatureTable.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
if (shapefileFeatureTable.getLoadStatus() == LoadStatus.LOADED) {
mMapView.setViewpointGeometryAsync(shapefileFeatureTable.getExtent());
String geoType = shapefileFeatureTable.getGeometryType().toString();
SimpleRenderer renderer = null;
SimpleMarkerSymbol markerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.GREEN, 6);
SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.RED, 1);
SimpleFillSymbol fillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.argb(70, 252, 241, 144), lineSymbol);
if (geoType.equals("POINT")) {
renderer = new SimpleRenderer(markerSymbol);
}
if (geoType.equals("POLYLINE")) {
renderer = new SimpleRenderer(lineSymbol);
}
if (geoType.equals("POLYGON")) {
renderer = new SimpleRenderer(fillSymbol);
}
featureLayer.setRenderer(renderer);
} else {
String error = "Shapefile feature table failed to load: " + shapefileFeatureTable.getLoadError().toString();
Toast.makeText(MainActivity.this, error, Toast.LENGTH_LONG).show();
}
}
});
}
4、效果:
5、加载影像:
private void importTiff(String tiffFile) {
Raster raster = new Raster(tiffFile);
RasterLayer rasterLayer = new RasterLayer(raster);
mMapView.getMap().getOperationalLayers().add(rasterLayer);
rasterLayer.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
if (raster.getLoadStatus() == LoadStatus.LOADED)
mMapView.setViewpointGeometryAsync(rasterLayer.getFullExtent());
else {
String error = "Raster failed to load: " + raster.getLoadError().toString();
Toast.makeText(MainActivity.this, error, Toast.LENGTH_LONG).show();
}
}
});
}
6、下一节讲解 arcgis for android 入门与提高(九)地理查询arcgis for android 入门与提高(九)地理查询 + 触摸事件_郝大大的博客-CSDN博客
欢迎订阅专栏!