Question

I have tried this method to get Altitude, using longitude and latitude

private double lookingForAltitude(double latitude, double longitude) {
        double result = Double.NaN;
        HttpClient httpClient = new DefaultHttpClient();
        HttpContext localContext = new BasicHttpContext();
        String url = "http://maps.googleapis.com/maps/api/elevation/"
                + "xml?locations=" + String.valueOf(longitude)
                + "," + String.valueOf(latitude)
                + "&sensor=true";
        HttpGet httpGet = new HttpGet(url);
        try {
            HttpResponse response = httpClient.execute(httpGet, localContext);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                InputStream instream = entity.getContent();
                int r = -1;
                while ((r = instream.read()) != -1)
                    respStr.append((char) r);
                String tagOpen = "<elevation>";
                String tagClose = "</elevation>";
                if (respStr.indexOf(tagOpen) != -1) {
                    int start = respStr.indexOf(tagOpen) + tagOpen.length();
                    int end = respStr.indexOf(tagClose);
                    String value = respStr.substring(start, end);
                    result = (double)(Double.parseDouble(value));
                }
                instream.close();
            }
        } catch (ClientProtocolException e) {} 
        catch (IOException e) {}

        return result;
    }

Unfortunately doesn't works

Passing for example

double latitude = 48.856908
double longitude = 2.352426

Rue de Tivoli Paris France

get -3997.6191406

What is wrong??

I get wrong value also with others places.

PS

I have heard that the request limit for this function is 2500. This is related to every IP or is the max amount for all the apps that use my certificate?

Was it helpful?

Solution

You are swapping the values for latitude and longitude.

http://maps.googleapis.com/maps/api/elevation/xml?locations=2.352426,48.856908&sensor=true returns:

<result>
<location>
<lat>2.3524260</lat>
<lng>48.8569080</lng>
</location>
<elevation>-3997.6191406</elevation>
<resolution>610.8129272</resolution>
</result>

While http://maps.googleapis.com/maps/api/elevation/xml?locations=48.856908,2.352426&sensor=true returns:

<result>
<location>
<lat>48.8569080</lat>
<lng>2.3524260</lng>
</location>
<elevation>32.0345688</elevation>
<resolution>9.5439520</resolution>
</result>

You must be calling lookingForAltitude with the values swapped.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top