地图量算

发送反馈


支持地图量算。包括距离量算、面积量算。量算结果的获取及展示可在主线程和监听器类中两种方式来实现。

距离量算。下面示例为距离量算,量算结果在主线程中进行获取及展示。

    // 距离量算结果
    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中的地图量算。