Android 如何从JSON web服务获取纬度和经度?
我正在将字符串格式的国家名称转换为经纬度 为此,我使用了以下JSON web服务 我不知道如何从那个JSON获得经度和纬度 请帮助我从上述web服务获取经度和纬度。 我尝试了下面的代码,但我不确定它是否正确:Android 如何从JSON web服务获取纬度和经度?,android,json,google-maps,latitude-longitude,Android,Json,Google Maps,Latitude Longitude,我正在将字符串格式的国家名称转换为经纬度 为此,我使用了以下JSON web服务 我不知道如何从那个JSON获得经度和纬度 请帮助我从上述web服务获取经度和纬度。 我尝试了下面的代码,但我不确定它是否正确: try { Log.v("MAPS","Lang-Lat::1"); String myjsonstring = stringBuffer.toString(); L
try
{
Log.v("MAPS","Lang-Lat::1");
String myjsonstring = stringBuffer.toString();
Log.v("My JSON STRING",""+myjsonstring);
Log.v("MAPS","Lang-Lat::2");
JSONArray jsonArray = new JSONArray(myjsonstring);
Log.v("MAPS","Lang-Lat::3");
JSONObject jsonObj = null;
String status = jsonObj.getString("status");
Log.v("MAPS","Lang-Lat::4");
if (status.equals("OK"))
{
Log.v("Log Receive","Json String:::"+myjsonstring);
jsonObj = jsonArray.getJSONObject(0);
JSONObject JSONObject2=jsonObj.getJSONObject("geometry");
JSONObject JSONObject3=JSONObject2.getJSONObject("bounds");
JSONObject JSONObject4=JSONObject3.getJSONObject("northeast");
for(int i=0; i<JSONObject4.length();i++)
{
lang = JSONObject4.getDouble("lng");
lat=JSONObject4.getDouble("lat");
Log.v("Lang:",""+lang);
Log.v("Lat",""+lat);
}
}
}
catch (Exception e)
{
Log.v("Map_View::","Call JSON Exception in Getting Map--->"+e.toString());
e.printStackTrace();
}
试试看
{
Log.v(“地图”、“Lang Lat::1”);
字符串myjsonstring=stringBuffer.toString();
Log.v(“MyJSON字符串”,“MyJSON字符串+myjsonstring”);
Log.v(“地图”、“Lang Lat::2”);
JSONArray JSONArray=新的JSONArray(myjsonstring);
Log.v(“地图”、“Lang Lat::3”);
JSONObject jsonObj=null;
String status=jsonObj.getString(“status”);
Log.v(“地图”、“Lang Lat::4”);
如果(状态等于(“正常”))
{
v(“日志接收”,“Json字符串::”+myjsonstring);
jsonObj=jsonArray.getJSONObject(0);
JSONObject JSONObject 2=JSONObject.getJSONObject(“几何体”);
JSONObject JSONObject 3=JSONObject 2.getJSONObject(“边界”);
JSONObject JSONObject 4=JSONObject 3.getJSONObject(“东北”);
对于(int i=0;i
/*********从地址获取纬度和经度*********/
public class GetLatLngAsyncTask extends AsyncTask<ArrayList<String>, Void, String>{
JSONObject jObject;
JSONObject places = null;
String lat;
protected void onPreExecute() {
}
@Override
protected String doInBackground(ArrayList<String>... params) {
//ParseLatitudeLng placeJsonParser = new ParseLatitudeLng();
ArrayList<String> inSync=params[0];
double lng1 = 0,lat1 = 0;
try{
lng1=lat1=0;
places = ParseLatitudeLng.getLocationInfo(YOUR_ADDRESS);
lng1 = ((JSONArray)places.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lng");
lat1 = ((JSONArray)places.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lat");
}catch(Exception e){
Log.d("Exception",e.toString());
}
return lat;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}
公共类GetLatLngAsyncTask扩展异步任务{
JSONObject jObject;
JSONObject places=null;
弦拉特;
受保护的void onPreExecute(){
}
@凌驾
受保护的字符串doInBackground(ArrayList…params){
//ParseLattudelng placeJsonParser=新的ParseLattudelng();
ArrayList inSync=params[0];
双lng1=0,lat1=0;
试一试{
lng1=lat1=0;
places=ParseLatitudeLng.getLocationInfo(您的地址);
lng1=((JSONArray)places.get(“results”).getJSONObject(0)
.getJSONObject(“几何体”).getJSONObject(“位置”)
.getDouble(“液化天然气”);
lat1=((JSONArray)places.get(“results”).getJSONObject(0)
.getJSONObject(“几何体”).getJSONObject(“位置”)
.getDouble(“lat”);
}捕获(例外e){
Log.d(“异常”,例如toString());
}
返回lat;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
}
}
调用Asynctask获取纬度和经度您是否尝试过json解析代码?如果是,请将代码发布到此处我对解析json数据解析几乎不了解,但上面json的格式令人困惑,请帮助我。@yuvaツ 查看我的代码更新问题嗯,谢谢,但是我应该在哪里调用GetLatLngAsyncTask ParseLatitudeLngNo.你必须在代码中调用asynctask。检查一下我的代码。我在asynctask中调用了ParseLatitudeLng。我已经给了你工作代码。你必须调用asynctask。好的,你能告诉我什么是ParsingCount=j;因为我没有知道ParsingCount的格式吗?它是整数吗?+1是你非常好的答案。你不需要它。如果它工作,mark我的回答会出错。:(我在其他异步类postexecute方法中使用你的异步类。
public class GetLatLngAsyncTask extends AsyncTask<ArrayList<String>, Void, String>{
JSONObject jObject;
JSONObject places = null;
String lat;
protected void onPreExecute() {
}
@Override
protected String doInBackground(ArrayList<String>... params) {
//ParseLatitudeLng placeJsonParser = new ParseLatitudeLng();
ArrayList<String> inSync=params[0];
double lng1 = 0,lat1 = 0;
try{
lng1=lat1=0;
places = ParseLatitudeLng.getLocationInfo(YOUR_ADDRESS);
lng1 = ((JSONArray)places.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lng");
lat1 = ((JSONArray)places.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lat");
}catch(Exception e){
Log.d("Exception",e.toString());
}
return lat;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}