Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从JSON web服务获取纬度和经度?_Android_Json_Google Maps_Latitude Longitude - Fatal编程技术网

Android 如何从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

我正在将字符串格式的国家名称转换为经纬度

为此,我使用了以下JSON web服务

我不知道如何从那个JSON获得经度和纬度

帮助我从上述web服务获取经度和纬度。

我尝试了下面的代码,但我不确定它是否正确:

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


        }

    }