Google Map getAltitude()

N

note3

Ambitioniertes Mitglied
0
Hallo zusammen,

die Metode
@Override
public void onMapClick(LatLng point) {...}

liefert nur point.latitude und point.longitude, nicht aber point.altitude also die Höhe.
Ich meine hier einen beliebigen Punkt, nicht den Standort.
Im Internet habe ich nur die folgende Routine gefunden.

In try erfolgt schon bei der ersten Anweisung
HttpResponse response = httpClient.execute(httpGet, localContext);
eine Verzweigung nach catch (IOException e) {}

Es liegt wohl daran, dass man nicht auf den Server zugreifen kann.
Braucht man hier noch einen Eintag in die Manifest-Datei?
Code:
// http://stackoverflow.com/questions/1995998/android-get-altitude-by-longitude-and-latitude
    private double getAltitude(Double longitude, Double latitude) {
        double result = Double.NaN;
        HttpClient httpClient = new DefaultHttpClient();
        HttpContext localContext = new BasicHttpContext();
        String url = "http://gisdata.usgs.gov/"
                + "xmlwebservices2/elevation_service.asmx/"
                + "getElevation?X_Value=" + String.valueOf(longitude)
                + "&Y_Value=" + String.valueOf(latitude)
                + "&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=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;
                StringBuffer respStr = new StringBuffer();
                while ((r = instream.read()) != -1)
                    respStr.append((char) r);
                String tagOpen = "<double>";
                String tagClose = "</double>";
                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.parseDouble(value);
                }
                instream.close();
            }
        } catch (ClientProtocolException e) {} 
        catch (IOException e) {}
        return result;
    }
 
note3 schrieb:
Es liegt wohl daran, dass man nicht auf den Server zugreifen kann.
Braucht man hier noch einen Eintag in die Manifest-Datei?

Aber sicher braucht man die.
Und um es vorwegzunehmen: im UI Thread darf man auch mit Permission keinen internetzugriff machen. => AsyncTask
 
DieGoldeneMitte schrieb:
Aber sicher braucht man die.
Und um es vorwegzunehmen: im UI Thread darf man auch mit Permission keinen internetzugriff machen. => AsyncTask
Hm,
so richtig aufschlussreich ist die Antwort für mich nicht.
Die Zeile
<uses-permission android:name="android.permission.INTERNET" />
steht schon in meiner Manifest-Datei, aber über AsyncTask finde ich in meinem Buch nichts. Vielleicht hilft googeln
 

Ähnliche Themen

Gemini-Media
Antworten
1
Aufrufe
1.819
swa00
swa00
R
Antworten
3
Aufrufe
1.615
Ritartet
R
W
  • welder99
Antworten
0
Aufrufe
783
welder99
W
Zurück
Oben Unten