地图量算 |
支持地图量算。包括距离量算、面积量算。量算结果的获取及展示可在主线程和监听器类中两种方式来实现。
距离量算。下面示例为距离量算,量算结果在主线程中进行获取及展示。
// 距离量算结果
public void Measure_distance() {
// 构造查询参数
MeasureParameters parameters = new MeasureParameters();
Point2D[] pts = { new Point2D(23, 34), new Point2D(53.55, 12.66), new Point2D(73.88, 12.6) };
parameters.point2Ds =pts;
MeasureService service = new MeasureService(URI);
MyMeasureEventListener listener = new MyMeasureEventListener();
service.process(parameters, listener,null);
try {
listener.waitUntilProcessed();
} catch (Exception e) {
e.printStackTrace();
}
// 结果验证
assertNotNull("The result is null!", result);
assertEquals("The distance of measure",6098355.576672727, result.distance);
assertEquals("The area of measure", -1.0, result.area);
assertEquals("The unit of measure", Unit.METER, result.unit);
}
// 量算监听器类
class MyMeasureEventListener extends MeasureEventListener {
@Override
public void onMeasureStatusChanged(Object sourceObject, EventStatus status) {
// 量算结果
result = (MeasureResult) sourceObject;
}
}
面积量算。下面示例为面积量算,量算结果在主线程中进行获取及展示。
// 面积量算结果
public void Measure_Area() {
// 构造查询参数
MeasureParameters parameters = new MeasureParameters();
Point2D[] pts = { new Point2D(23, 34), new Point2D(53.55, 12.66), new Point2D(73.88, 12.6),new Point2D(23,34) };
parameters.point2Ds =pts;
MeasureService service = new MeasureService(URI);
MyMeasureEventListener listener = new MyMeasureEventListener();
service.process(parameters, listener,MeasureMode.AREA);
try {
listener.waitUntilProcessed();
} catch (Exception e) {
e.printStackTrace();
}
// 结果验证
assertNotNull("The result is null!", result);
assertEquals("The distance of measure",-1.0, result.distance);
assertEquals("The area of measure", 3.157590930368346E12, result.area);
assertEquals("The unit of measure", Unit.METER, result.unit);
}
// 量算监听器类
class MyMeasureEventListener extends MeasureEventListener {
@Override
public void onMeasureStatusChanged(Object sourceObject, EventStatus status) {
// 量算结果
result = (MeasureResult) sourceObject;
}
}
完整示例可参考SampleCode中的地图量算。