Android 如何从谷歌地图获取海拔高度

Android 如何从谷歌地图获取海拔高度,android,google-maps,Android,Google Maps,我试图得到高度,但它没有得到任何垃圾值。我已跟踪此链接: 你需要调用runnable,类似这样的东西 public void onLocationChanged(Location location) { if (location == null) { } else { new Thread(new Runnable() { public void run() { final d

我试图得到高度,但它没有得到任何垃圾值。我已跟踪此链接:


你需要调用runnable,类似这样的东西

public void onLocationChanged(Location location) {
    if (location == null) {           
    } 
    else {
        new Thread(new Runnable() {
            public void run() {
                final double alt = getAltitude(lon, lat);
            }
        }).run();
    }
当您已经将它解析为double时,您正试图从字符串中获取它的值

        double res = Double.NaN;

        while ((line = bufferedReader.readLine()) != null) {

            int r = -1;
            StringBuffer respStr = new StringBuffer();
            while ((r = inputStream.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);
                // parsing to  double here.                           
                res = Double.parseDouble(value);
            }
        }

        inputStream.close();
        httpURLConnection.disconnect();

        Log.v("Altitude D",String.valueOf(res));

       // return String.valueOf(res); get rid of this line
       return res;

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    // or return res down here.
    return res;
}
double res=double.NaN;
而((line=bufferedReader.readLine())!=null){
int r=-1;
StringBuffer respStr=新的StringBuffer();
而((r=inputStream.read())!=-1)
响应追加((char)r);
字符串tagOpen=“”;
字符串tagClose=“”;
如果(响应索引of(tagOpen)!=-1){
int start=respStr.indexOf(tagOpen)+tagOpen.length();
int end=respStr.indexOf(tagClose);
字符串值=响应子字符串(开始、结束);
//这里要加倍。
res=Double.parseDouble(值);
}
}
inputStream.close();
httpURLConnection.disconnect();
Log.v(“高度D”,字符串值(res));
//返回字符串.valueOf(res);摆脱这条线
返回res;
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
//或者回到这里。
返回res;
}

您需要调用runnable,类似这样的函数

public void onLocationChanged(Location location) {
    if (location == null) {           
    } 
    else {
        new Thread(new Runnable() {
            public void run() {
                final double alt = getAltitude(lon, lat);
            }
        }).run();
    }
当您已经将它解析为double时,您正试图从字符串中获取它的值

        double res = Double.NaN;

        while ((line = bufferedReader.readLine()) != null) {

            int r = -1;
            StringBuffer respStr = new StringBuffer();
            while ((r = inputStream.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);
                // parsing to  double here.                           
                res = Double.parseDouble(value);
            }
        }

        inputStream.close();
        httpURLConnection.disconnect();

        Log.v("Altitude D",String.valueOf(res));

       // return String.valueOf(res); get rid of this line
       return res;

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    // or return res down here.
    return res;
}
double res=double.NaN;
而((line=bufferedReader.readLine())!=null){
int r=-1;
StringBuffer respStr=新的StringBuffer();
而((r=inputStream.read())!=-1)
响应追加((char)r);
字符串tagOpen=“”;
字符串tagClose=“”;
如果(响应索引of(tagOpen)!=-1){
int start=respStr.indexOf(tagOpen)+tagOpen.length();
int end=respStr.indexOf(tagClose);
字符串值=响应子字符串(开始、结束);
//这里要加倍。
res=Double.parseDouble(值);
}
}
inputStream.close();
httpURLConnection.disconnect();
Log.v(“高度D”,字符串值(res));
//返回字符串.valueOf(res);摆脱这条线
返回res;
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
//或者回到这里。
返回res;
}

查看此链接:我跟踪了该链接,上面的代码是对该代码的修改,但有一些错误,url无法显示页面查看此链接:我跟踪了该链接,上面的代码是对该代码的修改,但有一些错误,url无法显示页面谢谢,女士,但AsyncTask的onPostExecute显示尝试返回时出错,返回值仅为Double。这就是问题所在,夫人。但如果你能尽快提供,对我会很有帮助的。顺便说一句,再次感谢:)我用这个高度呼叫全班,高度=新高度();execute(String.valueOf(location.getLatitude()),String.valueOf(location.getLongitude());从onLocationChangedthank you'am,但是在AsyncTask的onPostExecute上显示错误,尝试返回时仅返回两倍。这就是问题所在,夫人。但如果你能尽快提供,对我会很有帮助的。顺便说一句,再次感谢:)我用这个高度呼叫全班,高度=新高度();execute(String.valueOf(location.getLatitude()),String.valueOf(location.getLongitude());从OnLocation更改