public static float getElevation(final Geopoint current) {
        if (routingServiceConnection == null || current == null || !routingServiceConnection.isConnected()) {
            return NO_ELEVATION_AVAILABLE;
        }
        final Bundle params = new Bundle();
        params.putInt("engineMode", RoutingEngine.BROUTER_ENGINEMODE_GETELEV);
        params.putDoubleArray("lats", new double[]{current.getLatitude(), current.getLatitude()});
        params.putDoubleArray("lons", new double[]{current.getLongitude(), current.getLongitude()});
        params.putString("v", RoutingMode.STRAIGHT.parameterValue);
        final String gpx = routingServiceConnection.getTrackFromParams(params);

        // parse result
        final boolean[] inElevationElement = new boolean[1];
        final float[] result = new float[1];
        result[0] = NO_ELEVATION_AVAILABLE;
        try {
            Xml.parse(gpx, new DefaultHandler() {
                @Override
                public void startElement(final String uri, final String localName, final String qName, final Attributes atts) {
                    if (qName.equalsIgnoreCase("ele")) {
                        inElevationElement[0] = true;
                    }
                }

                @Override
                public void endElement(final String uri, final String localName, final String qName) {
                    inElevationElement[0] = false;
                }

                @Override
                public void characters(final char[] ch, final int start, final int length) {
                    if (inElevationElement[0]) {
                        result[0] = Float.parseFloat(String.valueOf(ch));
                    }
                }
            });
        } catch (SAXException | NullPointerException ignore) {
            return NO_ELEVATION_AVAILABLE;
        }
        return result[0];
    }
Return a valid track (with at least two points, including the start and destination).
In some cases (e.g., destination is too close or too far, path could not be found),
a straight line will be returned.

@param start       the starting point
@param destination the destination point
@return a track with at least two points including the start and destination points
main/src/main/java/cgeo/geocaching/maps/routing/Routing.java