Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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文件中获取lng和lat_Android_Json_Google Maps - Fatal编程技术网

Android 如何从JSON文件中获取lng和lat

Android 如何从JSON文件中获取lng和lat,android,json,google-maps,Android,Json,Google Maps,我想从JSON文件中获取“lat”和“lng”,并将其添加到保留GeoPoint的数组中。我试图这样做,但对我来说不起作用: protected List<GeoPoint> JsonArray(){ List<GeoPoint> endp = new ArrayList<GeoPoint>(); try{ JSONObject obj = new JSONObject(json); JSONA

我想从JSON文件中获取“lat”和“lng”,并将其添加到保留GeoPoint的数组中。我试图这样做,但对我来说不起作用:

protected List<GeoPoint> JsonArray(){
        List<GeoPoint> endp = new ArrayList<GeoPoint>();

        try{
        JSONObject obj = new JSONObject(json);
        JSONArray steps = obj.getJSONArray("routes");
        for(int i=0;i<steps.length();i++){
            JSONObject temp = steps.getJSONObject(i);
            JSONObject ele = temp.optJSONObject("steps").optJSONObject("end_location");
            ele.getJSONObject("lat");
            ele.getJSONObject("lng");

            double lat = Double.parseDouble(ele.getJSONObject("lat").toString());
            double lng = Double.parseDouble(ele.getJSONObject("lng").toString());
            endp.add(new GeoPoint((int)(lat *1E6),(int)(lng * 1E6)));

        }



        }catch (JSONException e) {
            // TODO: handle exception
        }
        return endp;
    }

有人知道我如何以其他方式完成吗?

您的变量
JSONArray steps=obj.getJSONArray(“routes”)
不表示JSON对象的“步骤”部分,而是“路由”部分

此外,您还跳过了JSON层次结构中的一些级别。对于给定的JSON,您将需要以下步骤来遍历JSON(除了routes数组之外,我省略了在不同数组上的循环)

JSONArray routes=obj.getJSONArray(“routes”);
对于(int i=0;i

引用:

您的变量
JSONArray steps=obj.getJSONArray(“routes”);
不表示JSON对象的“steps”部分,而是“routes”部分

此外,您还跳过了JSON层次结构中的一些级别

JSONArray routes=obj.getJSONArray(“routes”);
对于(int i=0;i

参考:

解析当前json字符串以获取lat和lng:

JSONObject obj = new JSONObject(json);
        JSONArray steps = obj.getJSONArray("routes");
        for(int i=0;i<steps.length();i++){
            JSONObject temp = steps.getJSONObject(i);

             // get bounds JSONObject 
            JSONObject boundsjsonobj = temp.getJSONObject("bounds");
             // get northeast JSONObject
            JSONObject jsonboj_bounds_northeast= boundsjsonobj.getJSONObject("northeast");
            // get northeast lng and lat 
             String str_northeast_lat=jsonboj_bounds_northeast.getString("lat");
             String str_northeast_lng=jsonboj_bounds_northeast.getString("lng");
             // get southwest JSONObject
             JSONObject jsonboj_bounds_southwest= boundsjsonobj.getJSONObject("southwest");
            // get northeast lng and lat 
             String str_southwest_lat=jsonboj_bounds_southwest.getString("lat");
             String str_southwest_lng=jsonboj_bounds_southwest.getString("lng");

             //get legs JsonArray from routes
             JSONArray jsonarray_legs = temp.getJSONArray("legs");
             for(int j=0;j<jsonarray_legs.length();j++){
                JSONObject jobjlegs = jsonarray_legs.getJSONObject(j);
                 // get end_location json object

                 JSONObject jobjlegs_end_location = jobjlegs.getJSONObject("end_location");
                  String str_end_location_lat==jobjlegs_end_location.getString("lat");
                  String str_end_location_lng==jobjlegs_end_location.getString("lng");

                  // get start_address object


                 JSONObject jobjlegs_start_address = jobjlegs.getJSONObject("start_address");
                  String str_start_address_lat==jobjlegs_start_address.getString("lat");
                  String str_start_address_lng==jobjlegs_start_address.getString("lng");

                  // get steps jsonArray
                  JSONArray jsonarray_steps = jobjlegs.getJSONArray("steps");
                  for(int k=0;k<jsonarray_steps.length();k++){
                JSONObject jobjsteps = jsonarray_steps.getJSONObject(k);

                    // get end_location jsonobject
                     JSONObject jobjsteps_end_location = jobjsteps.getJSONObject("end_location");
                       double latend = Double.parseDouble(jobjsteps_end_location.getString("lat"));
                       double lngend = Double.parseDouble(jobjsteps_end_location.getString("lng"));
                       endp.add(new GeoPoint((int)(latend *1E6),(int)(lngend * 1E6)));

                     // get start_location jsonobject
                     JSONObject jobjsteps_start_location = jobjsteps.getJSONObject("start_location");
                       double latstart = Double.parseDouble(jobjsteps_start_location.getString("lat"));
                       double lngstart = Double.parseDouble(jobjsteps_start_location.getString("lng"));
                  }

             }

        }
JSONObject obj=新的JSONObject(json);
JSONArray steps=obj.getJSONArray(“路由”);

对于(int i=0;i解析当前json字符串以获取lat和lng:

JSONObject obj = new JSONObject(json);
        JSONArray steps = obj.getJSONArray("routes");
        for(int i=0;i<steps.length();i++){
            JSONObject temp = steps.getJSONObject(i);

             // get bounds JSONObject 
            JSONObject boundsjsonobj = temp.getJSONObject("bounds");
             // get northeast JSONObject
            JSONObject jsonboj_bounds_northeast= boundsjsonobj.getJSONObject("northeast");
            // get northeast lng and lat 
             String str_northeast_lat=jsonboj_bounds_northeast.getString("lat");
             String str_northeast_lng=jsonboj_bounds_northeast.getString("lng");
             // get southwest JSONObject
             JSONObject jsonboj_bounds_southwest= boundsjsonobj.getJSONObject("southwest");
            // get northeast lng and lat 
             String str_southwest_lat=jsonboj_bounds_southwest.getString("lat");
             String str_southwest_lng=jsonboj_bounds_southwest.getString("lng");

             //get legs JsonArray from routes
             JSONArray jsonarray_legs = temp.getJSONArray("legs");
             for(int j=0;j<jsonarray_legs.length();j++){
                JSONObject jobjlegs = jsonarray_legs.getJSONObject(j);
                 // get end_location json object

                 JSONObject jobjlegs_end_location = jobjlegs.getJSONObject("end_location");
                  String str_end_location_lat==jobjlegs_end_location.getString("lat");
                  String str_end_location_lng==jobjlegs_end_location.getString("lng");

                  // get start_address object


                 JSONObject jobjlegs_start_address = jobjlegs.getJSONObject("start_address");
                  String str_start_address_lat==jobjlegs_start_address.getString("lat");
                  String str_start_address_lng==jobjlegs_start_address.getString("lng");

                  // get steps jsonArray
                  JSONArray jsonarray_steps = jobjlegs.getJSONArray("steps");
                  for(int k=0;k<jsonarray_steps.length();k++){
                JSONObject jobjsteps = jsonarray_steps.getJSONObject(k);

                    // get end_location jsonobject
                     JSONObject jobjsteps_end_location = jobjsteps.getJSONObject("end_location");
                       double latend = Double.parseDouble(jobjsteps_end_location.getString("lat"));
                       double lngend = Double.parseDouble(jobjsteps_end_location.getString("lng"));
                       endp.add(new GeoPoint((int)(latend *1E6),(int)(lngend * 1E6)));

                     // get start_location jsonobject
                     JSONObject jobjsteps_start_location = jobjsteps.getJSONObject("start_location");
                       double latstart = Double.parseDouble(jobjsteps_start_location.getString("lat"));
                       double lngstart = Double.parseDouble(jobjsteps_start_location.getString("lng"));
                  }

             }

        }
JSONObject obj=新的JSONObject(json);
JSONArray steps=obj.getJSONArray(“路由”);

对于(int i=0;iplz post)您的完整有效jsonI无法在此处添加所有内容,但此处有指向我的json文件的链接Android MapView未使用Google Maps API V3。(标记已删除)plz post您的完整有效jsonI无法在此处添加所有内容,但此处有指向我的json文件的链接Android MapView未使用Google Maps API V3。(标记已删除)我做错了这部分JSONObject obj=new JSONObject(json);因为当我调试时,它会从这里直接进入异常。我需要以任何特殊的方式将链接放到我的json文件中吗?打开这个或什么?@carolajnn:给我你的json的url,因为解析是正确的,这里是新的JSONObject(json);您需要传递从google place api检索到的字符串,而不是json这里您有我的URL我已经弄明白了。我使用了错误的JSONParser,但我改变了,现在工作正常:)我做错了这部分JSONObject obj=新的JSONObject(json);因为当我进行调试时,它会从这里直接进入异常。我需要以任何特殊方式将链接放到我的JSON文件中吗?打开这个或其他吗?@carolajnn:给我你的JSON的url,因为解析是正确的,这里是新的JSONObject(JSON);您需要传递从google place api检索到的字符串,而不是json这里您有我的URL我已经弄明白了。我使用了错误的JSONParser,但我更改了,现在工作正常:)
JSONObject obj = new JSONObject(json);
        JSONArray steps = obj.getJSONArray("routes");
        for(int i=0;i<steps.length();i++){
            JSONObject temp = steps.getJSONObject(i);

             // get bounds JSONObject 
            JSONObject boundsjsonobj = temp.getJSONObject("bounds");
             // get northeast JSONObject
            JSONObject jsonboj_bounds_northeast= boundsjsonobj.getJSONObject("northeast");
            // get northeast lng and lat 
             String str_northeast_lat=jsonboj_bounds_northeast.getString("lat");
             String str_northeast_lng=jsonboj_bounds_northeast.getString("lng");
             // get southwest JSONObject
             JSONObject jsonboj_bounds_southwest= boundsjsonobj.getJSONObject("southwest");
            // get northeast lng and lat 
             String str_southwest_lat=jsonboj_bounds_southwest.getString("lat");
             String str_southwest_lng=jsonboj_bounds_southwest.getString("lng");

             //get legs JsonArray from routes
             JSONArray jsonarray_legs = temp.getJSONArray("legs");
             for(int j=0;j<jsonarray_legs.length();j++){
                JSONObject jobjlegs = jsonarray_legs.getJSONObject(j);
                 // get end_location json object

                 JSONObject jobjlegs_end_location = jobjlegs.getJSONObject("end_location");
                  String str_end_location_lat==jobjlegs_end_location.getString("lat");
                  String str_end_location_lng==jobjlegs_end_location.getString("lng");

                  // get start_address object


                 JSONObject jobjlegs_start_address = jobjlegs.getJSONObject("start_address");
                  String str_start_address_lat==jobjlegs_start_address.getString("lat");
                  String str_start_address_lng==jobjlegs_start_address.getString("lng");

                  // get steps jsonArray
                  JSONArray jsonarray_steps = jobjlegs.getJSONArray("steps");
                  for(int k=0;k<jsonarray_steps.length();k++){
                JSONObject jobjsteps = jsonarray_steps.getJSONObject(k);

                    // get end_location jsonobject
                     JSONObject jobjsteps_end_location = jobjsteps.getJSONObject("end_location");
                       double latend = Double.parseDouble(jobjsteps_end_location.getString("lat"));
                       double lngend = Double.parseDouble(jobjsteps_end_location.getString("lng"));
                       endp.add(new GeoPoint((int)(latend *1E6),(int)(lngend * 1E6)));

                     // get start_location jsonobject
                     JSONObject jobjsteps_start_location = jobjsteps.getJSONObject("start_location");
                       double latstart = Double.parseDouble(jobjsteps_start_location.getString("lat"));
                       double lngstart = Double.parseDouble(jobjsteps_start_location.getString("lng"));
                  }

             }

        }