我嘗試通過http請求獲取Google地圖的位置高度。不幸的是,我收到了一個回覆,但我無法使用它。在這段代碼中,我嘗試設置一個位置的高度,但它不起作用。我的OnResponse方法的高度是正確的,但在其他地方是錯誤的。你有什麼想法,爲什麼?使用Volley從http請求返回值
public class MainActivity extends AppCompatActivity {
Location location = new Location("");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
location.setLatitude(39.7391536);
location.setLongitude(-104.9847034);
getElevation();
Log.d("OnCreate", ""+location.getAltitude()); //print OnCreate: 0.0
}
public void getElevation(){
String urlName = "https://maps.googleapis.com/maps/api/elevation/json?locations="
+location.getLatitude()+","+location.getLongitude()
+"&key=mykey";
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest requester = new JsonObjectRequest(urlName, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
TextView mTxtDisplay = (TextView) findViewById(R.id.elevation);
double altitude;
try {
altitude = response.getJSONArray("results").getJSONObject(0).getDouble("elevation");
mTxtDisplay.setText("Elevation : " + altitude);
location.setAltitude(altitude);
Log.d("OnResponse", ""+location.getAltitude()); //print OnResponse: 1608.637939453125
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//TODO
}
});
queue.add(requester);
}
}
請求是異步的onResponse內的價值和任何延遲執行,你將在請求完成後得到'location.getAltitude()'的結果。 –
你是什麼意思這是錯誤的其他地方?您只顯示了排球請求。爲什麼你不能使用迴應?您明確表示您在onResponse中獲得了價值,因此您正在「使用它」 –
並且有一個適用於Android的Google Maps API,因此我不確定爲什麼您需要使用Volley –