一、加载wms服务
首先简单介绍WMS服务,WMS就是将地图发布成地图服务,然后客户端向地图服务器请求的时候,能根据用户的请求信息,返回对应的地图信息(比如对应的地图图片),然后客户端就能根据服务器的返回的结果,在客户端对需要的地图进行显示。
WMS服务根据OGC的标准,可以提供以下操作:
GetCapabitities:返回服务级元数据,它是对服务信息内容和要求参数的一种描述
GetMap:返回一个地图影像,其地理空间参考和大小参数是明确定义了的
GetFeatureInfo:返回显示在地图上的某些特殊要素的信息
GetLegendGraphic:返回地图的图例信息
在ArcGIS for Android中,主要会涉及到
GetCapabitities
和
GetMap
两种操作。其中,向地图服务器请求GetCapabitities,会获得一个XML文件,里面包含该WMS服务中包含的图层的名字,图层的坐标系等数据。向服务器请求GetMap,则会根据请求的参数获得一张图片,请求的参数中包含图片的高度,宽度,坐标系等信息。
加载实例(基于 Android 100.6 的 ArcGIS Runtime SDK):
ArcGIS for Android加载WMS服务时,要使用WMSLayer这个类。请求方式只能是
GetCapabitities
,通过GetCapabitities会获取到XML文件,ArcGIS for Android内部会自己解析,然后通过当前地图的位置,自动构造请求参数,然后通过GetMap向服务器请求,服务器根据请求参数返回图片,ArcGIS for Android会将图片展示在MapView上。
//wms服务图层名称
List<String> wmsLayersName = new ArrayList<String>();
wmsLayersName.add("aaa");
WmsLayer wmsLayer = new WmsLayer("http://192.168.0.136:8087/geoserver/common/wms?SERVICE=WMS&REQUEST=GetCapabilities", wmsLayersName);
wmsLayer.loadAsync();
if (basemap != null) {
basemap.getBaseLayers().add(wmsLayer);
}
wms服务就加载好了。
二、读取服务中图斑的信息
读取图斑信息主要用
GetFeatureInfo
方法,该方法具体需要的参数在
这里
http://ditu.mwr.gov.cn/iserver/help/html/zh/API/WMS/WMS130/GetFeatureInfo/GetFeatureInfo_request.htm
Polygon visibleArea = getView().getMapView().getVisibleArea();
Envelope envelope = visibleArea.getExtent();
double xMax = envelope.getXMax();
double xMin = envelope.getXMin();
double yMax = envelope.getYMax();
double yMin = envelope.getYMin();
String x = String.valueOf(e.getX()).split("\\.")[0];
String y = String.valueOf(e.getY()).split("\\.")[0];
//获取屏幕宽高
Resources resources = getView().getSelfActivity().getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
String GetFeatureInfo_url = "http://192.168.0.136:8087/geoserver/common/wms?" +
"SERVICE=WMS" +
"&VERSION=1.1.1" +
"&REQUEST=GetFeatureInfo" +
"&LAYERS=common:O_0810_YSCFGDWTTB_2022" +
"&BBOX=" + xMin + "," + yMin + "," + xMax + "," + yMax +
"&FORMAT=image/png" +
"&TRANSPARENT=true" +
"&QUERY_LAYERS=common:O_0810_YSCFGDWTTB_2022" +
"&exceptions=application/vnd.ogc.se_xml" +
"&INFO_FORMAT=application/json" +
"&FEATURE_COUNT=1" +
"&X=" + x +
"&Y=" + y +
"&SRS=EPSG:4490" +
"&WIDTH=" + screenWidth +
"&HEIGHT=" + screenHeight;