2012-10-22 76 views
4

我已經試過這種方法來獲得海拔高度,使用經度和緯度谷歌地圖Elevation API時錯誤值

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; 
    } 

遺憾的是沒有工作

傳遞例如

double latitude = 48.856908 
double longitude = 2.352426 

街de Tivoli Paris法國

得到-3997.6191406

問題是怎麼回事?

我在別人的地方也弄錯了價值。

PS

我聽說這個功能的請求限制是2500 這是關係到每一個IP或者是所有使用我的證書應用的最大金額是多少?

回答

4

您正在交換經度和緯度的值。

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

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

雖然http://maps.googleapis.com/maps/api/elevation/xml?locations=48.856908,2.352426&sensor=true回報:

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

您必須調用lookingForAltitude與交換價值。