Google Map getAltitude()

  • 2 Antworten
  • Neuester Beitrag
Diskutiere Google Map getAltitude() im Android App Entwicklung im Bereich Betriebssysteme & Apps.
N

note3

Ambitioniertes Mitglied
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;
    }
 
DieGoldeneMitte

DieGoldeneMitte

Dauergast
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
 
N

note3

Ambitioniertes Mitglied
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