直接看代码
public void queryByAddressName(String addressName) {
// 查询url
String querUrl = "http://server.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_1990-2000_Population_Change/MapServer/4";
// 创建查询对象
Query query = new Query(querUrl);
String where = "NAME='" + addressName + "'";
query.setWhere(where);
query.setReturnGeometry(true);
QueryTask queryTask = new QueryTask(query);
try {
// 查询获得信息
FeatureSet featureSet = queryTask.execute();
// System.out.println(featureSet.toString());
// featureSet.fromJson(null);
Graphic[] envGraphic = featureSet.getGraphics();
// new Graphic[graphicsLayer.getGraphics().length];
Point[] p = new Point[featureSet.getGraphics().length];
Envelope rExtent = null;
double Xmin, Ymin, Xmax, Ymax;
// 定义地图显示的左下方,右上角的坐标�?
Xmin = ArcGisActivity.map.getExtent().getXMin();
Ymin = ArcGisActivity.map.getExtent().getYMin();
Xmax = ArcGisActivity.map.getExtent().getXMax();
Ymax = ArcGisActivity.map.getExtent().getYMax();
for (int i = 0; i < featureSet.getGraphics().length; i++) {
if (featureSet.getGraphics().length == 1) {
//根据地图的geometryType来转换
Polygon polygon = (Polygon) envGraphic[i].getGeometry();
p[i] = polygon.getPoint(0);
ArcGisActivity.map.centerAt(p[i]);
// map.zoomout();
}
else {
Polygon polygon = (Polygon) envGraphic[i].getGeometry();
p[i] = polygon.getPoint(0);
if (Xmin < p[i].getX())
Xmin = p[i].getX(); // 赋�?
if (Ymin < p[i].getX())
Ymin = p[i].getY();
if (Xmax > p[i].getX())
Xmax = p[i].getX();
if (Ymax > p[i].getY())
Ymax = p[i].getY();
rExtent = new Envelope(Xmin / 1.20, Ymin / 1.20,
Xmax / 1.20, Ymax / 1.20); // 定位
if (i == featureSet.getGraphics().length - 1){
ArcGisActivity.map.setExtent(rExtent); // 显示
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}